【问题标题】:How to access an image in a different folder?如何访问不同文件夹中的图像?
【发布时间】:2012-05-17 05:34:56
【问题描述】:
如何在 Java 中访问不同文件夹中的图片?我有一系列图片,它们会根据用户输入而变化,这就是 x 的用途。
picture.setIcon(new ImageIcon("\\resources\\icons\\pictures\\"+x+".png"));
图像位于资源/图标/图片中(来自 .class 文件),但上面的代码不起作用。 x 的值不是问题,因为它可以正常工作。我是否以正确的方式调用图片?
【问题讨论】:
标签:
java
image
embedded-resource
【解决方案1】:
我对图片的调用方式正确吗?
可能不会。如果它们是(嵌入的)应用程序资源,它们通常位于 Jar 中,并且通过 ImageIcon 的基于 String 的构造函数不可用(它期望 String 等于 File 路径)。
对于嵌入式资源,请通过URL 访问它们。
URL urlToImg = this.getClass().
getResource("/resources/icons/pictures/"+x+".png");
picture.setIcon(new ImageIcon(urlToImg));
【解决方案2】:
我相信你应该使用正斜杠而不是反斜杠。
new ImageIcon("/resources/icons/pictures/"+x+".png")
这是表示资源文件路径的标准 Java 跨平台方式。它仍然适用于 Windows - Java 运行时库为您处理转换。
【解决方案3】:
图像位于(来自 .class 文件)资源/图标/图片中
这是个问题。系统不关心类文件在哪里,而是从哪里调用程序。
通过命令行指定资源文件夹,
java -jar myJar.jar C:\\home\\of\\the\\images
或通过属性
java -jar myJar.jar -DImageHome=/foo/bar/images
或从属性文件中是最灵活的。
如果你喜欢将图片放入jar中,使用安德鲁斯的建议,getClass().getRessource("...");
顺便说一句:我肯定知道,正斜杠是可移植的。反斜杠,afaik,不是。