首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更改Java程序的Dock图标?

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

Stack Overflow用户
提问于 2011-05-15 10:45:21
回答 6查看 29.2K关注 0票数 27

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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-01-03 01:27:57

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

代码语言:javascript
运行
复制
import com.apple.eawt.Application;
...
Application application = Application.getApplication();
Image image = Toolkit.getDefaultToolkit().getImage("icon.png");
application.setDockIconImage(image);
票数 19
EN

Stack Overflow用户

发布于 2011-05-15 10:51:26

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

代码语言:javascript
运行
复制
 >java -Xdock:icon=/path/myIcon.png myApp

This article上有很多关于把java应用程序带到Mac上的有用的小信息,你可能会有兴趣看一下Mac上列出的here的实用程序和工具,以及列出的部署选项here (如果你想沿着Java Webstart路线走下去,最后一个链接特别有用)。

票数 29
EN

Stack Overflow用户

发布于 2019-07-08 00:50:29

Java 9及更高版本的解决方案

在JDK9中,诸如Mac com.apple.eawt包中的内部API将不再可访问。

请参阅:http://openjdk.java.net/jeps/272

代码语言:javascript
运行
复制
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。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6006173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档