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

时间:2011-07-27 13:35:39

标签: java netbeans resources

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

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

我把一个这样的图像'filling.jpg'放在我项目的'resources'文件夹中。

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

所以我找到了这个方法:

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

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

我做错了什么,如何正确地获得该图像?

4 个答案:

答案 0 :(得分:45)

这很痛苦,使用netBeans IDE 7.2。

  1. 您需要记住,Netbeans会在您重建时清理Build文件夹,所以
  2. 将资源文件夹添加到 src 文件夹:

    • (项目)
      • SRC
        • 项目包文件夹(包含.java文件
        • 资源您想要的任何名称
        • 图片(可选子文件夹
  3. 在clean / build之后,这个结构被传播到Build文件夹中:

    • (项目)
      • 建立

          • 项目包文件夹(包含生成的.class文件
          • 资源(您的资源
          • 图片(您的可选子文件夹
  4. 访问资源:

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

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

    为我工作。请注意,在一种情况下,有一个领先的" /"而在另一方面则没有。 因此,资源路径的是" "构建文件夹中的文件夹。

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

答案 1 :(得分:22)

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

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

  • 项目文件夹
    • 构建
    • DIST
    • LIB
    • nbproject文件
    • 资源
    • SRC

转到项目的属性。您可以通过在“项目”选项卡窗口中右键单击项目并在下拉菜单中选择“属性”来执行此操作。

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

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

enter image description here

您现在应该可以使用此行或类似方法来提取资源:

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

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

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

答案 2 :(得分:20)

谢谢, Valter Henrique ,我的小费让我意识到,我只是输入了错误的图片路径。 在我的一次尝试中,我使用

    String pathToImageSortBy = "resources/testDataIcons/filling.png";
    ImageIcon SortByIcon = new ImageIcon(getClass().getClassLoader().getResource(pathToImageSortBy));

但正确的方法是在资源路径中使用我的项目名称

String pathToImageSortBy = "nameOfProject/resources/testDataIcons/filling.png";
ImageIcon SortByIcon = new ImageIcon(getClass().getClassLoader().getResource(pathToImageSortBy));

答案 3 :(得分:0)

对我来说,它就像在icons下的src文件夹中有图像,并且我编写了以下代码一样。

new ImageIcon(getClass().getResource("/icons/rsz_measurment_01.png"));