Подтвердить что ты не робот

Как изменить значок док-станции Java-программы?

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

4b9b3361

Ответ 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 также не нужна.