我想测试一个带有简单 png 图像的程序。我写了一个简短的程序来执行此操作,但我似乎无法找到正确的路径。我已经检查,再检查,再检查,并四次检查我的路径名以确保它不正确,但是无论我做什么,这个图像都不会显示。我使用了 Oracle 在 ImageIcon 文档中编写的一个简短类(creaetImageIcon()
)来完成此操作,但它似乎没有帮助。我将在下面发布整个程序,因为它很短。
package practiceImages;
import java.awt.BorderLayout;
import java.awt.Toolkit;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class ImageIconGUITest {
public static void main(String[] args) {
ImageIconGUITest gui = new ImageIconGUITest();
gui.display();
}
private ImageIcon createImageIcon(String path, String description) {
java.net.URL imgURL = getClass().getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL, description);
} else {
System.err.println("Couldn't find file: " + path);
return null;
}
}
private void display() {
JFrame frame = new JFrame();
JLabel label = new JLabel(createImageIcon(
"Users/Evan/javaItems/Sprites_and_Other_Art/green.png", "the color green"));
frame.add(BorderLayout.CENTER, label);
frame.setSize(500, 500);
frame.setVisible(true);
}
}
最佳答案
getResource(String)
方法只会找到应用程序运行时类路径上的资源。因为这个图像看起来像一个应用程序资源(即作为应用程序的一部分由您提供)它应该放在运行时类路径中。
例如大多数 IDE 都有一个位置,您可以将资源放入项目结构中,该位置将在运行时自动包含在内。将图像移动(或复制)到该路径。
然后就是提供正确的 String
了。让我们想象一下您的项目是这样设置的:
- 本
- 来源
- com
- 我们的
- 应用程序.java
- 我们的
- 资源
- 绿色.png
- com
所以Application.java
在package com.our;
中,而图片在路径resources/green.png
中。
如果从 Application
访问图像,正确的路径应该是(请打鼓..)
"/resources/green.png"
注意事项
- 前导的
/
很重要。它告诉 JRE 我们要从“类路径的根”查找图像,而不是使用相对于类本身包的路径。 - 正确的大小写也很重要。
"/resources/green.png"
字符串不会定位名为"/resources/Green.png"
或“/resources/green.PNG”
。
eclipse 路径
- 右键单击
src
目录,选择菜单底部的Properties
。
- 导航(使用您在没有 Eclipse 的情况下使用的正常方式)到
Location
的目录。 - 然后去父目录。
- 您应该会看到一个
bin
目录,其中包含类和(希望如此)图像。
关于java - 为 Windows 7 显示 ImageIcon png 文件的正确路径是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16631636/