如何从NetBeans中的“资源”文件夹正确获取图像
我在NetBeans 7.0中有一个Java项目。
我想dynamic地添加一些图像到一些标签。 图像将根据程序的状态而有所不同。
我在我的项目的“资源”文件夹中放置了一个这样的图像“filling.jpg”。
我想正确地到达这个文件(不是通过绝对path或相对path,因为当我构buildjar文件时会导致问题)。
所以我find了这个方法:
ImageIcon fillingIcon = new ImageIcon(getClass().getClassLoader().getResource("filling.jpg")); labelFontFilling.setIcon(fillingIcon);
它保持给我java.lang.NullPointerException。 但是我确信有这样的图像,因为我可以从NetBeans属性菜单为该标签分配图像到标签(但是我不想要这个,我想通过Java代码添加图像)。
我做错了什么,以及如何正确地获得该图像?
这是一个痛苦,使用netBeans IDE 7.2。
- 你需要记住,每当你重build,Netbeans清理生成文件夹,所以
-
将资源文件夹添加到src文件夹中:
- (项目)
- SRC
- 项目包文件夹( 包含.java文件 )
- 资源 ( 无论你想要什么名字 )
- 图像( 可选子文件夹 )
- SRC
- (项目)
-
在清理/构build之后,这个结构被传播到Build文件夹中:
- (项目)
- build立
- 类
- 项目包文件夹( 包含生成的.class文件 )
- 资源( 您的资源 )
- 图像( 您的可选子文件夹 )
- 类
- build立
- (项目)
要访问资源:
dlabel = new JLabel(new ImageIcon(getClass().getClassLoader().getResource("resourceshttp://img.dovov.comlogo.png")));
和:
if (common.readFile(getClass().getResourceAsStream("/resources/allwise.ini"), buf).equals("OK")) {
为我工作。 请注意,在一个情况下有一个前导“/”,而另一个则没有。 所以资源path的根是build文件夹中的“ classes ”文件夹。
双击dist文件夹中的可执行jar文件。 资源的path仍然有效。
谢谢, 瓦尔特·恩里克 ,你的提示,我设法意识到,我只是input这个图像的不正确的path。 在我使用的一个尝试中
String pathToImageSortBy = "resources/testDataIcons/filling.png"; ImageIcon SortByIcon = new ImageIcon(getClass().getClassLoader().getResource(pathToImageSortBy));
但正确的方式是在资源path中使用我的项目名称
String pathToImageSortBy = "nameOfProject/resources/testDataIcons/filling.png"; ImageIcon SortByIcon = new ImageIcon(getClass().getClassLoader().getResource(pathToImageSortBy));
我有一个稍微不同的方法,可能是有用的/更有利于一些。
在您的主项目文件夹下,创build一个资源文件夹。 你的文件夹结构应该看起来像这样。
- 项目文件夹
- build立
- DIST
- LIB
- nbproject文件
- 资源
- SRC
转到您的项目的属性。 您可以通过在“项目”选项卡窗口中右键单击项目并在下拉菜单中select“属性”来执行此操作。
在左侧的类别下,select来源。
在右侧的源包文件夹中,使用“添加文件夹”button添加资源文件夹。 一旦你点击确定,你应该看到你的项目下的资源文件夹。
你现在应该能够使用这条线或类似的方法拉动资源:
MyClass.class.getResource("/main.jpg");
如果您要在资源文件夹下创build一个名为Images的包,可以像这样检索资源:
MyClass.class.getResource("/Images/main.jpg");