如何更改Java程序的Dock图标?

cunj1qz1  于 2023-04-10  发布在  Java
关注(0)|答案(7)|浏览(125)

如何在Macintosh平台上更改Java程序的Dock图标?我听说过使用Apple的Java库(在Mac平台上提供某种额外支持),但我还没有找到一些实际的例子。

8tntrjer

8tntrjer1#

虽然我不确定如何在运行时更改它,但您可以在命令行中使用-Xdock:icon选项设置Dock图标,如:

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

This article有很多关于将Java应用程序引入Mac的有用信息,你可能会有兴趣查看这里列出的Mac实用程序和工具,以及这里列出的部署选项(如果你想走Java Webstart路线,最后一个链接特别有用)。

zu0ti5jz

zu0ti5jz2#

Apple eAWT提供了Application类,允许更改应用程序的dock图标。

import com.apple.eawt.Application;
...
Application application = Application.getApplication();
Image image = Toolkit.getDefaultToolkit().getImage("icon.png");
application.setDockIconImage(image);
41zrol4v

41zrol4v3#

Java 9及以上版本解决方案

在JDK 9中,内部API(如Mac OS X com.apple.eawt包中的API)将不再可访问。
参见: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 dock的图标比以前更好,因为在构建应用程序时不会遇到任何问题。在windows计算机上使用此代码也没有问题。不推荐反射,因为Java 9也不需要。

rryofs0p

rryofs0p4#

如果您使用Eclipse,您可以将项目导出为Mac OS X应用程序包,并指定一个.icns文件用作图标。
在Eclipse中,转到File〉Export,并选择“Other”目录中的“Mac OS X Application Bundle”选项。
单击下一步按钮。
然后,您将看到“应用程序包导出菜单”。
此菜单上的最后一个选项是“图标”。您可以在此指定.icns文件用作停靠图标。
Picture of the 2 Eclipse Export Menus
就创建.icns文件而言,您可以使用Apple的Icon Composer从图像文件创建.icns文件。Here is a good tutorial on making mac icons.

z0qdvdin

z0qdvdin5#

适用于Microsoft Windows

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

Mac OS X

import com.apple.eawt.Application;
Application.getApplication().setDockIconImage(new ImageIcon("Football.png").getImage());
vjrehmav

vjrehmav6#

如果你安装了XCode,你可以使用JarBundler来创建一个使用Jar文件的Mac App。如果你没有XCode,你可以使用这个JarBundler:
http://sourceforge.net/projects/jarbundler/
在创建bundler的过程中,您可以在.icns扩展名中选择一个图标。这将是您的Dock Icon。

cs7cruho

cs7cruho7#

修复Java 17:关于JavaFX

final Toolkit defaultToolkit = Toolkit.getDefaultToolkit();
java.awt.Image image = defaultToolkit.getImage(getClass().getResource("/resources/images/YOURICON.png"));
final Taskbar taskbar = Taskbar.getTaskbar();

taskbar.setIconImage(image);

相关问题