1

如何访问 Java 中不同文件夹中的图片?我有一系列图片,它们会根据用户输入而改变,这就是x目的。

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

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

4

3 回答 3

2

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

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

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

URL urlToImg = this.getClass().
    getResource("/resources/icons/pictures/"+x+".png");
picture.setIcon(new ImageIcon(urlToImg));
于 2012-05-17T23:20:03.623 回答
0

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

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

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

于 2012-05-17T05:52:30.780 回答
0

图片位于资源/图标/图片中(来自 .class 文件)

那是个问题。系统不关心类文件在哪里,而是从哪里调用程序。

通过命令行指定资源文件夹,

java -jar myJar.jar C:\\home\\of\\the\\images 

或通过属性

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

或来自属性文件是最灵活的。

如果您喜欢将图像放入 jar 中,请使用 Andrews 的建议,getClass().getRessource("...");

顺便说一句:我确定,正斜杠是可移植的。反斜杠,afaik,不是。

于 2012-05-17T23:35:54.503 回答