在Jar文件中设置图标图像

在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文件就可以工作。

使用

 this.getFrame().setIconImage( new imageIcon(getClass().getClassLoader().getResource("PlagiaLyzerIcon.png")) ); 

代替。

注意:

此行仅在图像位于jar文件的根目录中时才有效。 如果没有,您必须在字符串上指定文件夹:

 getResource("yourfolder/PlagiaLyzerIcon.png") 

这是因为Netbeans IDE具有不同的类路径,而不是独立运行jar文件(没有Ant)。

假设您的Netbeans项目位于location /project/

类路径是: /project/build/classes/和项目root /project/ 。 如果你的图标存储在: /project/myicons/ ,那么它们就是classpath的一部分,因为/project/也是。 但是当你构建你的项目时,只有/project/build/classes/中的文件最终会在jar文件中结束,这些文件是来自/projcet/src/ “build”。

解:

将您的图标移动到源包中: /project/src/myicons/

或者,将/project/myicons/文件夹添加到源代码中(右键单击项目 – >属性 – >源代码 – >在那里添加文件夹)

非常感谢…

这里的代码对我有用!!!!

  BufferedImage image = null; try { image = ImageIO.read(getClass().getClassLoader().getResource("images/frame.png")); } catch (IOException e) { e.printStackTrace(); } super.setIconImage(image); 

在导出JAR之前,您是否在Netbean选项中指定了图标的构建路径? 在Eclipse上,它通过在Java Build Path中添加一个源文件夹来完成,如此截图所示。 在Netbeans上应该是一样的吗?

使用像我这样的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