在Java Swing中显示资源图像

问题描述:

我正在尝试使用Java Swing来显示简单的png图像。图像存储在项目文件夹内,更准确地说是:~/Workspace/MyProject/res/logo.png在Java Swing中显示资源图像

里面一个名为FirstAccess.java类,它扩展JFrame因此,我宣布:

final BufferedImage myLogo = ImageIO.read(new File("../res/logo.png")); 
final JLabel logoLabel = new JLabel(new ImageIcon(myLogo)); 
// [...] 

但是,这产生了以下异常。

线程“main”中的异常javax.imageio.IIOException:无法读取输入文件!

在javax.imageio.ImageIO.read(ImageIO.java:1301)

[...]

进程退出代码为1

什么问题完成了吗?我使用了错误的路径吗?是否可能存在某些访问权限问题?

注:FirstAccess.java是恰好位于~/Workspace/MyProject/src/main/

注2:我也试图与路径"~/Workspace/MyProject/res/logo.png"内​​......但仍然给出了同样的问题。

+2

应用资源将被部署的时间内成为嵌入的资源,所以它是明智的,开始访问他们,如果他们, 马上。 ** [tag:embedded-resource]必须通过URL而不是文件访问。**请参阅[info。页面为嵌入式资源](http://stackoverflow.com/tags/embedded-resource/info)如何形成的URL。 –

对于资源,请改为使用getClass().getResource(String)
你的情况: final BufferedImage myLogo = ImageIO.read(getClass().getResource("../res/logo.png"));

final BufferedImage myLogo = ImageIO.read(FirstAccess.class.getResource("../res/logo.png"));静态背景下