Как я могу изменить значок док-станции программы в Java на платформе Macintosh? Я слышал об использовании библиотеки Apple Java (которая предоставляет некоторую дополнительную поддержку на платформе Mac), но мне еще предстоит найти некоторые фактические примеры.
Как изменить значок док-станции Java-программы?
Ответ 1
Apple eAWT предоставляет класс Application, который позволяет изменить значок док-станции приложения.
import com.apple.eawt.Application;
...
Application application = Application.getApplication();
Image image = Toolkit.getDefaultToolkit().getImage("icon.png");
application.setDockIconImage(image);
Ответ 2
Пока я не уверен, как изменить его во время выполнения, вы можете установить в командной строке свой значок Dock с помощью параметра -Xdock:icon
, например:
>java -Xdock:icon=/path/myIcon.png myApp
В этой статье есть много полезной небольшой информации о том, как переносить Java-приложения на Mac, и вам может быть интересно посмотреть утилиты и инструменты для Mac, перечисленные здесь, а также параметры развертывания, перечисленные здесь (последняя ссылка особенно полезна, если вы хотите перейти по пути Java Webstart).
Ответ 3
Если вы используете Eclipse, вы можете экспортировать проект в виде пакета приложений Mac OS X и указать файл .icns для использования в качестве значка.
В Eclipse откройте "Файл" > "Экспорт" и выберите "Пакет приложений Mac OS X" в каталоге "Другой".
Нажмите следующую кнопку.
Затем вам будет предложено меню "Приложение Bundle Export".
Последняя опция в этом меню - "Значок". Здесь вы указываете файл .icns для использования в качестве значка док-станции.
Изображение 2 Экспортных меню Eclipse
Что касается создания файла .icns, вы можете использовать Apple Icon Composer для создания файла .icns из файла изображения. Вот хороший учебник по созданию значков Mac.
Ответ 4
Для Microsoft Windows
setIconImage(new ImageIcon("Football.png").getImage());
Для Mac OS X
import com.apple.eawt.Application;
Application.getApplication().setDockIconImage(new ImageIcon("Football.png").getImage());
Ответ 5
Если у вас установлен XCode, вы можете использовать JarBundler для создания приложения Mac с помощью Jar файла. Если у вас нет XCode, вы можете использовать этот JarBundler:
http://sourceforge.net/projects/jarbundler/
Во время создания комплектатора вы можете выбрать значок в расширении .icns. Это будет ваш значок док-станции.
Ответ 6
Решение для 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 также не нужна.