如何在Java中访问不同文件夹中的图片?我有一系列图片,它们会根据用户输入进行更改,这是x
的用途。
picture.setIcon(new ImageIcon("\\resources\\icons\\pictures\\"+x+".png"));
图像位于资源/图标/图片中(来自.class文件),但上述代码不起作用。 x
的值不是问题,因为它可以正常工作。我是以正确的方式调用图片吗?
答案 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,不是。