【问题标题】:Program icon not showing up after Clean and Build (Netbeans)Clean and Build (Netbeans) 后未显示程序图标
【发布时间】:2021-07-30 18:24:05
【问题描述】:

我是 Java 新手,也很熟悉。我刚刚使用 JFrame 创建了一个小应用程序并添加了一些按钮和文本字段,我还有一个方法可以设置我想要的任务栏图标和左角的图标。

当我在 Netbeans 中运行程序时,一切似乎都正确,但是当我构建项目时,图标没有显示出来。我尝试了很多东西,但没有一个对我有用。

这是我用于程序的方法:

    private void setIcon() {
        ImageIcon imageIcon = new ImageIcon("src/main/java/icons/steam.png");
        this.setIconImage(imageIcon.getImage());
    }

我从构造函数中调用方法。

谢谢。

编辑 1:

实现安德鲁所说的,现在我有了这个:

BufferedImage img = null;
        try {
            URL url = getClass().getResource("src/main/java/icons/steam.png");
            img = ImageIO.read(url);
        } catch (IOException e) {
        }
        this.setIconImage(img);

那是在构造函数上。但是当我运行它时,我得到:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: input == null!
at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1400)

我尝试了不同的路径,但我无法获得它。是的,我确定“steam.png”就在那里。

【问题讨论】:

  • new ImageIcon("src/main/java/icons/steam.png"); Huh.. 又到了一天中的那个时候。应用程序资源在部署时将成为嵌入式资源,因此明智的做法是立即开始访问它们。 embedded-resource 必须通过 URL 而不是文件访问。请参阅info. page for embedded resource 了解如何形成 URL。 顺便说一句: 加载图片的实用技巧。采用。图像IO!创建图像图标可能会静默失败,但ImageIO.read(..) 在出现问题时会生成有用的堆栈跟踪。
  • 检查图像实际上是在您假定的位置的 Jar 中。你在使用 Windows 吗?一个方便的提示。 Jar 文件只是一个专门的 Zip 文件。将 Jar 重命名(副本)以以 .zip 结尾,然后双击打开并浏览。另一件事:我总是使用 / 前缀,提醒类加载器从 Jar 的根目录中查找类。
  • 我用WinRAR打开了.jar,我看不到任何名为“icons”的文件夹,不知道为什么。我在“src/main/java/icons”下有“icons”文件夹,还尝试了“src/icons”。我也编辑了源路径,添加 / 作为前缀,所以我有:“/icons/steam.png”
  • OK .. 某些 IDE 要求资源位于特定路径中,然后才能将它们放入最终 Jar。对于某些人来说,它是resources 目录/包。

标签: java image swing jframe embedded-resource


【解决方案1】:

我一直在寻找解决方案,终于找到了(感谢 Andrew 通过 cmets)

首先我编辑了我的代码,正如您在 EDIT 1

中看到的那样

在那之后,我得到了一个IllegalArgumentException,问题是我在/src下没有“资源”文件夹

所以我在src/main/resources 下创建了我的资源文件夹并将我的图片放入其中

然后我得到它使用

URL url = getClass().getResource("/icons/steam.png");
img = ImageIO.read(url);

这就是我的问题的解决方法,现在当我运行程序时,图像现在已加载。

非常感谢!

【讨论】:

  • 很高兴看到你解决了它。 :) 请在网站允许时accept the answer。这有助于人们以后找到解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 1970-01-01
  • 2017-12-14
  • 1970-01-01
相关资源
最近更新 更多