我有一个简单的 swing 应用程序,它带有一个包含各种组件的 JFrame。在 JFrame 上,我有一个扩展 JPanel 的自定义工具栏类。在 JPanel 上,我计划添加带有图像图标的按钮。我的目录结构如下:
- Project/src/gui(包中包含应用程序的源文件)
- Project/src/images(包包含一个 jar 文件
jlfgr-1_0.jar
,带有按钮图标和/或单独的图像文件)
问题是我想避免将单个图像文件复制到图像包中。我宁愿以某种方式直接从 jar 文件加载图像。我有返回适当图标的私有(private)方法。此方法有效,例如,如果我将图像文件拖到图像包中并调用:
button.setIcon(createIcon("/images/Save16.gif"));
private ImageIcon createIcon(String path) {
URL url = getClass().getResource(path);
ImageIcon icon = new ImageIcon(url);
if(url == null) {
System.err.println("Unable to load image: " + path);
}
return icon;
我知道这是基本的,但我如何才能在当前设置中直接从 jar 文件中获取图像? 谢谢。
最佳答案
感谢 javax.imageio.ImageIO
,您可以从流中读取图像:
private ImageIcon createIcon(String path) {
BufferedImage image = ImageIO.read(getClass().getResourceAsStream(path));
ImageIcon icon = new ImageIcon(image);
return icon;
}
关于java - 从 jar 文件加载图像(使用 Eclipse IDE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25961837/