How to load icon from resource in Java?

2020-04-04 09:54发布

Possible duplication (solved): https://stackoverflow.com/a/1133132/783469

I have icons (jpg, png) for my application, which is stored in my directory /var/tmp/gameXbox/src/image/<here>. Now, How can i use them in application, without using hard link but as resource?

Example: not working

IconForMyButton = ImageIO.read(new File(
                    ClassLoader.getSystemResourceAsStream("image/button1.png")
                  ));

enter image description here

Works when i do with hard link:

IconForMyButton = ImageIO.read(new File(
                      "/var/tmp/gameXbox/src/image/button1.png"
                  ));

标签: java swing
3条回答
别忘想泡老子
2楼-- · 2020-04-04 10:25

Resource loading takes place in the classpath, relative to the current package. If /var/tmp/gameXbox/src/ is in your classpath, then:

ImageIO.read( ClassLoader.getSystemResource( "image/button1.png" ) );

However, usually the src folder is not included in the classpath by IDEs. Try adding the image to the bin folder.

查看更多
▲ chillily
3楼-- · 2020-04-04 10:28

Images do not go into a source folder but into a resource folder. Fix your IDE and use Maven and it will work with getResourceAsStream with the current context classloader.

查看更多
Evening l夕情丶
4楼-- · 2020-04-04 10:35

I usually use class.getResource for this kind of operation :

YourClass.class.getResource("image/button1.png")

i use it to retrieve the file from a jar archive but should work also to retrieve from filesystem resources.

查看更多
登录 后发表回答