以下代码在NetBeans上运行时可以正常工作。
this.getFrame().setIconImage(Toolkit.getDefaultToolkit().getImage("PlagiaLyzerIcon.png"));
然而,一旦它被内置到Jar文件中,图标就消失了。
任何人都知道这是什么问题?我意识到我要将图标图像放在根目录上,但是,在编译成JAR后,图标就消失了。
感谢您的帮助......
大家好,问题已通过以下代码解决,
this.getFrame().setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getClassLoader().getResource("plagialyzer/resources/PlagiaLyzerIcon.png")));
一旦编译成jar文件就可以了。
答案 0 :(得分:7)
使用
this.getFrame().setIconImage(
new imageIcon(getClass().getClassLoader().getResource("PlagiaLyzerIcon.png"))
);
代替。
注意:
此行仅在图像位于jar文件的根目录中时才有效。如果没有,您必须在字符串上指定文件夹:
getResource("yourfolder/PlagiaLyzerIcon.png")
答案 1 :(得分:2)
这是因为Netbeans IDE具有不同的类路径,而不是独立运行jar文件(没有Ant)。
假设您的Netbeans项目位于/project/
位置:
类路径为:/project/build/classes/
和项目根/project/
。如果您的图标存储在:/project/myicons/
中,那么它们就是类路径的一部分,因为/project/
也是如此。但是当你构建项目时,只有/project/build/classes/
中的文件最终会出现在jar文件中,这些文件是从/projcet/src/
“构建”的。
解决方案:
将您的图标移动到源包中:/project/src/myicons/
或者,将/project/myicons/
文件夹添加到您的来源(右键单击您的项目 - >属性 - >来源 - >在那里添加您的文件夹)
答案 2 :(得分:1)
非常感谢...
这里的代码对我有用!!!!
BufferedImage image = null;
try {
image = ImageIO.read(getClass().getClassLoader().getResource("images/frame.png"));
} catch (IOException e) {
e.printStackTrace();
}
super.setIconImage(image);
答案 3 :(得分:0)
在导出JAR之前,您是否在Netbean选项中指定了图标的构建路径?在Eclipse上,它通过在Java Build Path中添加一个源文件夹来完成,如screenshot所示。 Netbeans应该是一样的吗?
答案 4 :(得分:0)
使用像我这样的NetBeans,只需将徽标(在我的情况下为mylogo.png)放在项目文件夹的src /目录中。确保尺寸为32 x 32像素,以确保图标的最佳质量。我无法设置.ico图像作为我的JFrame图标,但.png运行良好。 通过扩展JFrame,我直接将jar图标设置为:
Image getIcon()
{ return Toolkit.getDefaultToolkit().getImage(getClass().getClassLoader().getResource("mylogo.png")); }
setIconImage(getIcon());
清理并构建jar后,jar文件图标仍然没有更改(仍然是jar默认图标),但是当你执行jar文件时,标题栏和任务栏中的图标将是你的自定义图标。您可以通过创建快捷方式更改jar文件图标并更改该快捷方式的图标。快捷图标的最佳分辨率为512 x 512像素.ico