将默认的java coffee dock图标更改为其他内容

时间:2018-05-18 04:13:10

标签: java jframe

我读了很多答案来更改图片中显示的默认java咖啡图标(操作系统:MacOS)(比如使用JFrame.setIconImage()),但是无法做到。

如果有人能够成功更改它。您能否逐步解决一下如何做到这一点,可能还有解释?

enter image description here

2 个答案:

答案 0 :(得分:1)

所以,我使用...进行了非常快速的测试。

(IEnumerable<TEnum>)

它显示......

Hello Bunny

整洁......但是,这只能在Mac上编译和运行。

A&#34;典型&#34;对此的解决方案是使用反射来尝试在运行时加载(TEnum value),类似于......

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JLabel;
import com.apple.eawt.Application;

public class Test {

    public static void main(String[] args) {
        try {
            Application application = Application.getApplication();
            application.setDockIconImage(ImageIO.read(Test.class.getResource("/javaapplication163/bunny.jpg")));
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        new Test();
    }

    public Test() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame();
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public static class TestPane extends JPanel {

        public TestPane() {
            add(new JLabel("Hello"));
        }

    }

}

但是这是一些容易出错和杂乱的东西,更不用说......代码要完全痛苦了。

那么,我想我可能会尝试使用命令行参数,如The dock icon所示......

com.apple.eawt.Application

也有效。

虽然我更喜欢这种解决方案,但它确实意味着图标需要从Jar外部化,这有点痛苦,而且您可能需要提供完整的工作路径。

如果我要为我的项目生成应用程序包,我可能会遵循这个,但如果我只是部署一个Jar,我可能会想要使用以前的方法之一

答案 1 :(得分:0)

此解决方案适用于Java com.apple.eawt.Application不再可用的10。不需要命令行。

import java.awt.Taskbar;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

Taskbar taskbar=Taskbar.getTaskbar();
BufferedImage image = ImageIO.read(getClass().getResource("/path/icon.png"));
taskbar.setIconImage(image);

如果提供icon.png的相对路径,则它将包含在jar文件中。该图标也会出现在对话框中。

您还将希望将代码用于先前由com.apple.eawt.Application提供的“关于”,“首选项”和“退出”菜单项,并且可以在Alvin Alexander的页面Java 10: How to implement About, Preferences, and Quit menu items on MacOS中找到它