如何访问 Java 中不同文件夹中的图片?我有一系列图片,它们会根据用户输入而改变,这就是x
目的。
picture.setIcon(new ImageIcon("\\resources\\icons\\pictures\\"+x+".png"));
图片位于资源/图标/图片中(来自 .class 文件),但上面的代码不起作用。的值x
不是问题,因为它可以正常工作。我以正确的方式调用图片吗?
如何访问 Java 中不同文件夹中的图片?我有一系列图片,它们会根据用户输入而改变,这就是x
目的。
picture.setIcon(new ImageIcon("\\resources\\icons\\pictures\\"+x+".png"));
图片位于资源/图标/图片中(来自 .class 文件),但上面的代码不起作用。的值x
不是问题,因为它可以正常工作。我以正确的方式调用图片吗?
我以正确的方式调用图片吗?
可能不是。如果它们是(嵌入的)应用程序资源,它们通常位于 Jar 中,并且无法通过String
基于构造函数的ImageIcon
(期望String
等于File
路径)。
对于嵌入式资源,通过 访问它们URL
。
URL urlToImg = this.getClass().
getResource("/resources/icons/pictures/"+x+".png");
picture.setIcon(new ImageIcon(urlToImg));
我相信你应该使用正斜杠而不是反斜杠。
new ImageIcon("/resources/icons/pictures/"+x+".png")
这是表示资源文件路径的标准 Java 跨平台方式。它仍然适用于 Windows - Java 运行时库为您处理转换。
图片位于资源/图标/图片中(来自 .class 文件)
那是个问题。系统不关心类文件在哪里,而是从哪里调用程序。
通过命令行指定资源文件夹,
java -jar myJar.jar C:\\home\\of\\the\\images
或通过属性
java -jar myJar.jar -DImageHome=/foo/bar/images
或来自属性文件是最灵活的。
如果您喜欢将图像放入 jar 中,请使用 Andrews 的建议,getClass().getRessource("...");
顺便说一句:我确定,正斜杠是可移植的。反斜杠,afaik,不是。