【问题标题】:Set Icon Image in Jar file在 Jar 文件中设置图标图像
【发布时间】:2022-01-29 05:34:36
【问题描述】:

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

【问题讨论】:

    标签: java jar


    【解决方案1】:

    使用

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

    改为。

    注意:

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

    getResource("yourfolder/PlagiaLyzerIcon.png")
    

    【讨论】:

    • 即使我设置了文件夹的路径,它同样适用于项目,但不适用于 Jar 文件。而且,我不确定您提供的代码有什么问题?构造函数问题?
    • 我的意思是这段代码不起作用,this.getFrame().setIconImage(new imageIcon(getClass().getClassLoader().getResource("PlagiaLyzerIcon.png")));
    • ooo 现在我看到了问题... this.getFrame().setIconImage(new imageIcon(getClass().getClassLoader().getResource("PlagiaLyzerIcon.png")).getImage() ) ;应该工作
    【解决方案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/ 文件夹添加到您的源中(右键单击您的项目 -> 属性 -> 源 -> 在此处添加您的文件夹)

    【讨论】:

    • @Pindatjuh,我实际上已经按照您的建议移到了一个文件夹,但是代码 this.getFrame().setIconImage(Toolkit.getDefaultToolkit().getImage("PlagiaLyzerIcon.png")) ;似乎只在项目根目录中工作..
    【解决方案3】:

    非常感谢...

    这里是适合我的代码!!!!

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          我使用此代码,但它只会更改您在窗口左上角的小图标以及您可以查看打开哪个应用程序的栏上的按钮上的图标。

          import java.awt.image.BufferedImage;
          import javax.imageio.ImageIO;
          
          constuctor of my class extends JFrame{
             BufferedImage image = null;
             try {
                image = ImageIO.read(new File("path/logo.png"));
             } catch (IOException e) {
                e.printStackTrace();
             }
             super.setIconImage(image);
          }
          

          【讨论】:

            猜你喜欢
            • 2014-10-05
            • 2013-06-27
            • 2013-11-24
            • 1970-01-01
            • 2014-07-16
            • 1970-01-01
            • 2011-10-01
            • 2011-06-08
            • 1970-01-01
            相关资源
            最近更新 更多