在Jar文件中设置图标图像

时间:2010-03-20 13:58:16

标签: java 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文件就可以了。

5 个答案:

答案 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