Java 在Jar文件中设置图标图像

Java 在Jar文件中设置图标图像,java,jar,Java,Jar,在NetBeans上运行时,以下代码工作正常 this.getFrame().setIconImage(Toolkit.getDefaultToolkit().getImage("PlagiaLyzerIcon.png")); 然而,一旦它被构建到Jar文件中,图标就消失了 有人知道问题出在哪里吗?我意识到我必须将图标图像放在根目录中,然而,在编译到JAR中之后,图标消失了 谢谢你的帮助 大家好,下面的代码解决了这个问题 this.getFrame().setIconImage(Toolki

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

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

这是因为Netbeans IDE的类路径与单独运行jar文件(没有Ant)时不同

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

类路径是:
/project/build/classes/
,项目根路径是
/project/
。如果图标存储在:
/project/myicons/
中,则它们是类路径的一部分,因为
/project/
也是。但是当您构建项目时,只有
/project/build/classes/
中的文件最终会出现在jar文件中,这些文件是从
/projset/src/
中“构建”的

解决方案:

将图标移动到源程序包中:
/project/src/myicons/

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

使用

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

注:

只有当图像位于jar文件的根目录下时,这一行才起作用。如果没有,则必须在字符串上指定文件夹:

getResource("yourfolder/PlagiaLyzerIcon.png")
非常感谢

这里的代码,为我工作

    BufferedImage image = null;

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


    super.setIconImage(image);

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

@Pindatjuh,实际上我已经按照您的建议移动到了一个文件夹,但是代码是this.getFrame().setIconImage(Toolkit.getDefaultToolkit().getImage(“stricalyzericon.png”);似乎只在项目根目录下工作。即使我为文件夹设置了路径,它也在项目中工作,但不在Jar文件中工作。我不知道你给的代码有什么问题?构造函数问题?我的意思是这段代码不起作用,这个.getFrame().setIconImage(新的图像图标(getClass().getClassLoader().getResource(“stricalyzericon.png”));哦,现在我明白问题了。。。this.getFrame().setIconImage(新的图像图标(getClass().getClassLoader().getResource(“stricalyzericon.png”)).getImage();应该是工作