如何正确从 NetBeans 中的“资源”文件夹中获取图像

2022-09-01 05:38:58

我在 NetBeans 7.0 中有一个 Java 项目。

我想动态地向某些标签添加一些图像。图像将根据程序的状态而有所不同。

我把一个这样的图像,“填充.jpg”,放在我项目的“资源”文件夹中。

我想正确访问此文件(不是通过绝对或相对路径,因为当我构建jar文件时,这会导致问题)。

所以我找到了这个方法:

ImageIcon fillingIcon = new ImageIcon(getClass().getClassLoader().getResource("filling.jpg"));
labelFontFilling.setIcon(fillingIcon);

它一直给我java.lang.NullPointerException。但是我确信有该图像,因为我可以从该标签的“NetBeans 属性”菜单中将图像分配给标签(但我不想要这个,我想通过 Java 代码添加图像)。

我做错了什么,我怎样才能正确获得该图像?


答案 1

使用 netBeans IDE 7.2 时,这很痛苦。

  1. 您需要记住,每当您重新生成时,Netbeans 都会清理 Build 文件夹,因此
  2. 将资源文件夹添加到 src 文件夹:

    • (项目)
      • 来源
        • 项目包文件夹(包含.java文件)
        • 资源无论您想要什么名称)
        • 图像(可选子文件夹))
  3. 清理/构建后,此结构将宣传到 Build 文件夹中:

    • (项目)


          • 项目包文件夹(包含生成的.class文件)
          • 资源(您的资源)
          • 图像(可选子文件夹))

要访问资源,请执行以下操作:

dlabel = new JLabel(new ImageIcon(getClass().getClassLoader().getResource("resources/images/logo.png")));

和:

if (common.readFile(getClass().getResourceAsStream("/resources/allwise.ini"), buf).equals("OK")) {

为我工作。请注意,在一种情况下,有一个前导“/”,而在另一种情况下则没有。因此,资源路径的根是生成文件夹中的“classes”文件夹。

双击 dist 文件夹中的可执行 jar 文件。资源的路径仍然有效。


答案 2

我有一个稍微不同的方法,可能对某些人有用/更有益。

在主项目文件夹下,创建一个资源文件夹。您的文件夹结构应如下所示。

  • 项目文件夹
    • 断续器
    • 自由
    • nbproject
    • 资源
    • 来源

转到项目的属性。为此,您可以在“项目”选项卡窗口中右键单击您的项目,然后在下拉菜单中选择“属性”。

在左侧的“类别”下,选择“源”。

在右侧的“源包文件夹”中,使用“添加文件夹”按钮添加资源文件夹。单击“确定”后,您应该会在项目下看到一个“资源”文件夹。

enter image description here

您现在应该能够使用以下行或类似方法拉取资源:

MyClass.class.getResource("/main.jpg");

如果要在资源文件夹下创建一个名为 Images 的包,则可以按如下方式检索资源:

MyClass.class.getResource("/Images/main.jpg");

推荐