繁体   English   中英

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

[英]How do you change the Dock Icon of a Java program?

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

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

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

本文提供了有关将Java应用程序引入Mac的许多有用的小信息,您可能有兴趣查看此处列出的Mac实用程序和工具以及此处列出的部署选项(如果您想转到最后一个链接,则特别有用Java Webstart路线)。

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

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

如果使用Eclipse,则可以将项目导出为Mac OS X应用程序捆绑包,并指定一个.icns文件用作图标。
在Eclipse中,转到“文件”>“导出”,然后在“其他”目录中选择“ Mac OS X应用程序捆绑包”选项。

单击下一步按钮。
然后,您将看到“应用程序捆绑包导出菜单”。
此菜单上的最后一个选项是“图标”。 在这里您可以指定.icns文件用作停靠图标。

2个Eclipse导出菜单的图片

就创建.icns文件而言,您可以使用Apple的Icon Composer从图像文件创建.icns文件。 这是有关制作Mac图标的好教程。

对于Microsoft Windows

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

对于Mac OS X

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

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);
    }
}

此代码可以按原样使用。 只需更改图像的路径即可。
这种为Mac OS Dock设置图标的新实现方式(在JDK 9+中)比以前更好,因为在构建应用程序时不会遇到任何问题。 在Windows计算机上使用此代码也没有问题。 不建议使用反射,因为也不需要Java 9。

如果安装了XCode,则可以使用JarBundler使用Jar文件创建Mac App。 如果没有XCode,则可以使用以下JarBundler:

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

在创建捆绑程序的过程中,您可以在.icns扩展名中选择一个图标。 那将是您的Dock图标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM