如何从Java资源加载图标?
我有我的应用程序,存储在我的目录/var/tmp/gameXbox/src/image/<here>
图标(JPG,PNG)。现在,我如何在应用程序中使用它们,而不使用硬链接而是作为资源?
实施例:不工作
IconForMyButton = ImageIO.read(new File(
ClassLoader.getSystemResourceAsStream("image/button1.png")
));
作品时,我用硬链接做:
IconForMyButton = ImageIO.read(new File(
"/var/tmp/gameXbox/src/image/button1.png"
));
资源装载发生在类路径的地方,相对于当前包。 如果/var/tmp/gameXbox/src/
是在类路径中,则:
ImageIO.read(ClassLoader.getSystemResource("image/button1.png"));
但是,通常src
文件夹不包含在IDE的classpath中。尝试将图像添加到bin
文件夹。
project/build/classes/image/*存在。但不工作。看到我上面的编辑。 – YumYumYum 2011-12-28 20:53:57
我编辑了我的答案。我甚至没有意识到。你正试图从'InputStream'创建'File'对象,而我则从'URL'创建。 – Darkhogg 2011-12-28 20:59:11
import javax.imageio。*; (使用ImageIO) – shieldgenerator7 2015-03-12 16:14:23
我通常使用class.getResource对于这种操作的:
YourClass.class.getResource("image/button1.png")
我用它来检索从JAR档案文件,但也应努力从文件系统资源检索。
图像不进入源文件夹,而是进入资源文件夹。修复您的IDE并使用Maven,它将与getResourceAsStream
一起使用当前的上下文类加载器。
确保图像包含在应用程序的类路径中,并使用相对链接 – Robin 2011-12-28 20:35:25
您要加载的内容是什么?来自classpath或文件系统的图像?这是一个区别。你在混合起来。 – 2011-12-28 20:57:55
@Google:请先确认,您想在按钮上显示此图标,因为您的变量正在提示。我对吗? Regards – 2011-12-28 21:04:05