【问题标题】:How to load icon from resource in Java?如何从Java中的资源加载图标?
【发布时间】:2011-12-28 20:33:52
【问题描述】:

可能的重复(已解决):https://stackoverflow.com/a/1133132/783469

我的应用程序有图标(jpg、png),这些图标存储在我的目录/var/tmp/gameXbox/src/image/<here> 中。现在,我如何在应用程序中使用它们,而不使用硬链接而是作为资源?

示例:不工作

IconForMyButton = ImageIO.read(new File(
                    ClassLoader.getSystemResourceAsStream("image/button1.png")
                  ));

当我使用硬链接时工作:

IconForMyButton = ImageIO.read(new File(
                      "/var/tmp/gameXbox/src/image/button1.png"
                  ));

【问题讨论】:

  • 确保图像包含在应用程序的类路径中,并使用相对链接
  • 你想加载什么?来自类路径或文件系统的图像?这是一个区别。你把两者混为一谈了。
  • @Google :请先确认,您想在按钮上显示此图标,正如您的变量所暗示的那样。我是对的吗?问候
  • @Michael-O:来自类路径(文件系统为我工作,如上所述)。

标签: java swing


【解决方案1】:

资源加载发生在类路径中,相对于当前包。 如果/var/tmp/gameXbox/src/ 在你的类路径中,那么:

ImageIO.read( ClassLoader.getSystemResource( "image/button1.png" ) );

但是,通常src 文件夹被 IDE 包含在类路径中。尝试将图像添加到bin 文件夹。

【讨论】:

  • 项目/构建/类/图像/* 存在。但不工作。请参阅上面的编辑。
  • 我已经编辑了我的答案。我什至没有意识到。你试图从InputStream 创建一个File 对象,而我从URL 创建一个对象。
  • 导入 javax.imageio.*; (使用 ImageIO)
【解决方案2】:

我通常使用 class.getResource 进行这种操作:

YourClass.class.getResource("image/button1.png")

我使用它从 jar 存档中检索文件,但也可以从文件系统资源中检索。

【讨论】:

    【解决方案3】:

    图像不会进入源文件夹,而是进入资源文件夹。修复您的 IDE 并使用 Maven,它将与 getResourceAsStream 和当前上下文类加载器一起使用。

    【讨论】:

      猜你喜欢
      • 2010-11-13
      • 1970-01-01
      • 2020-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-21
      • 2012-11-15
      • 1970-01-01
      相关资源
      最近更新 更多