我在 NetBeans 7.0 中有一个 Java 项目。
我想动态添加一些图像到某个标签。图像会根据程序的状态而有所不同。
我在我的项目的“resources”文件夹中放了一张这样的图片“filling.jpg”。
我想正确地访问这个文件(不是通过绝对或相对路径,因为这会在我构建 jar 文件时导致问题)。
于是我找到了这个方法:
ImageIcon fillingIcon = new ImageIcon(getClass().getClassLoader().getResource("filling.jpg"));
labelFontFilling.setIcon(fillingIcon);
它不断给我 java.lang.NullPointerException。 但我确信有那个图像,因为我可以从 NetBeans 属性菜单中将图像分配给该标签的标签(但我不想要这个,我想通过 Java 代码添加图像)。
我做错了什么,如何正确获取该图像?
最佳答案
这很痛苦,使用 netBeans IDE 7.2。
- 您需要记住,Netbeans 会在您重建时清理 Build 文件夹,所以
将资源文件夹添加到src文件夹:
- (项目)
- 源代码
- 项目包文件夹(包含 .java 文件)
- 资源(随便你的名字)
- 图片(可选子文件夹)
- 源代码
- (项目)
在清理/构建之后,这个结构被传播到构建文件夹中:
- (项目)
- 构建
- 类(class)
- 项目包文件夹(包含生成的 .class 文件)
- 资源(您的资源)
- 图片(您的可选子文件夹)
- 项目包文件夹(包含生成的 .class 文件)
- 类(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文件。通往资源的路径仍然有效。
关于java - 如何从 NetBeans 中的 'Resources' 文件夹中正确获取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6845231/