Как изменить значок Dock Java-программы? - PullRequest
21 голосов
/ 15 мая 2011

Как я могу изменить Dock Icon программы на Java на платформе Macintosh?Я слышал об использовании библиотеки Java от Apple (которая обеспечивает некоторую дополнительную поддержку на платформе Mac), но я пока не нашел реальных примеров.

Ответы [ 6 ]

24 голосов
/ 15 мая 2011

Хотя я не уверен, как изменить его во время выполнения, вы можете установить в командной строке значок Dock с помощью параметра -Xdock:icon, например:

 >java -Xdock:icon=/path/myIcon.png myApp

Эта статья содержит много полезной информации о переносе java-приложений на Mac, и вам может быть интересно посмотреть утилиты и инструменты для Mac, перечисленные здесь , а также варианты развертывания, перечисленные здесь (последняя ссылка особенно полезна, если вы хотите пойти по маршруту Java Webstart).

17 голосов
/ 02 января 2012

Apple eAWT предоставляет класс Application , который позволяет изменять значок закрепления приложения.

import com.apple.eawt.Application;
...
Application application = Application.getApplication();
Image image = Toolkit.getDefaultToolkit().getImage("icon.png");
application.setDockIconImage(image);
9 голосов
/ 22 марта 2012

Если вы используете Eclipse, вы можете экспортировать проект как пакет приложений Mac OS X и указать файл .icns для использования в качестве значка.
В Eclipse перейдите в «Файл»> «Экспорт» и выберите «Пакет приложений Mac OS X» внутри каталога «Прочее».

Нажмите кнопку «Далее».
После этого вы увидите «Меню экспорта комплекта приложений».
Последний параметр в этом меню - «Значок».Здесь вы указываете файл .icns для использования в качестве значка док-станции.

Изображение 2 меню экспорта Eclipse

Поскольку создание файла .icnsВ связи с этим вы можете использовать Icon Composer от Apple, чтобы создать файл .icns из файла изображения. Вот хорошее руководство по созданию значков Mac.

7 голосов
/ 12 марта 2014

для Microsoft Windows

setIconImage(new ImageIcon("Football.png").getImage());

Для Mac OS X

import com.apple.eawt.Application;
Application.getApplication().setDockIconImage(new ImageIcon("Football.png").getImage());
1 голос
/ 27 марта 2013

Если у вас установлен XCode, вы можете использовать JarBundler для создания приложения Mac с использованием файла Jar.Если у вас нет XCode, вы можете использовать этот JarBundler:

http://sourceforge.net/projects/jarbundler/

Во время создания упаковщика вы можете выбрать значок в расширении .icns.Это будет ваш значок в доке.

0 голосов
/ 07 июля 2019

Решение для Java 9 и более поздних версий

В JDK 9 внутренние API, такие как в пакете com.apple.eawt Mac OS X, больше не будут доступны.

см .: http://openjdk.java.net/jeps/272

package main;

import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.Image;
import java.awt.Taskbar;
import java.awt.Toolkit;
import java.net.URL;

/**
 * author: flohall
 * date: 2019-07-07
 */
public final class Main {

    public static void main (String[] args){

        final JFrame jFrame = new JFrame();

        //loading an image from a file
        final Toolkit defaultToolkit = Toolkit.getDefaultToolkit();
        final URL imageResource = Main.class.getClassLoader().getResource("resources/images/icon.gif");
        final Image image = defaultToolkit.getImage(imageResource);

        //this is new since JDK 9
        final Taskbar taskbar = Taskbar.getTaskbar();

        try {
            //set icon for mac os (and other systems which do support this method)
            taskbar.setIconImage(image);
        } catch (final UnsupportedOperationException e) {
            System.out.println("The os does not support: 'taskbar.setIconImage'");
        } catch (final SecurityException e) {
            System.out.println("There was a security exception for: 'taskbar.setIconImage'");
        }

        //set icon for windows os (and other systems which do support this method)
        jFrame.setIconImage(image);

        //adding something to the window so it does show up
        jFrame.getContentPane().add(new JLabel("Hello World"));

        //some default JFrame things
        jFrame.setDefaultCloseOperation(jFrame.EXIT_ON_CLOSE);
        jFrame.pack();
        jFrame.setVisible(true);
    }
}

Этот код можно использовать как есть.Просто измените путь к изображению.
Этот новый реализованный способ (в JDK 9+) установки значка для док-станции Mac OS лучше, чем раньше, потому что вы не столкнетесь с какими-либо проблемами при создании приложения.Также нет проблем использовать этот код на компьютере с Windows.Отражение, которое не рекомендуется, поскольку Java 9 также не требуется.

...