我读了很多答案来更改图片中显示的默认java咖啡图标(操作系统:MacOS)(比如使用JFrame.setIconImage()),但是无法做到。
如果有人能够成功更改它。您能否逐步解决一下如何做到这一点,可能还有解释?
答案 0 :(得分:1)
所以,我使用...进行了非常快速的测试。
(IEnumerable<TEnum>)
它显示......
整洁......但是,这只能在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中找到它