如何访问其他文件夹中的图像?

时间:2012-05-17 05:34:56

标签: java image embedded-resource

如何在Java中访问不同文件夹中的图片?我有一系列图片,它们会根据用户输入进行更改,这是x的用途。

picture.setIcon(new ImageIcon("\\resources\\icons\\pictures\\"+x+".png"));

图像位于资源/图标/图片中(来自.class文件),但上述代码不起作用。 x的值不是问题,因为它可以正常工作。我是以正确的方式调用图片吗?

3 个答案:

答案 0 :(得分:2)

  

我是以正确的方式调用图片吗?

可能不是。如果它们是(嵌入式)应用程序资源,它们通常位于Jar中,并且不能通过String的基于ImageIcon的构造函数(期望String等同于File)路径)。

对于嵌入式资源,请通过URL访问它们。

URL urlToImg = this.getClass().
    getResource("/resources/icons/pictures/"+x+".png");
picture.setIcon(new ImageIcon(urlToImg));

答案 1 :(得分:0)

你应该使用正斜杠而不是反斜杠。

new ImageIcon("/resources/icons/pictures/"+x+".png")

这是表示资源文件路径的标准Java跨平台方式。它仍可在Windows上运行 - Java运行时库为您处理转换。

答案 2 :(得分:0)

  

图像位于资源/图标/图片

中(来自.class文件)

这是一个问题。系统对类文件的位置不感兴趣,但对调用程序的位置不感兴趣。

通过命令行

指定资源文件夹
java -jar myJar.jar C:\\home\\of\\the\\images 

或通过财产

java -jar myJar.jar -DImageHome=/foo/bar/images 

或从属性文件中最灵活。

如果您想将图像放入jar中,请使用安德鲁建议,getClass()。getRessource(“...”);

顺便说一下:我知道,正斜杠是可移动的。反斜杠,afaik,不是。