java - 从 jar 文件加载图像(使用 Eclipse IDE)

标签 java eclipse image swing embedded-resource

我有一个简单的 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/

相关文章:

android - 不同安卓版本的图像渲染差异

java - 通过套接字发送对象和对象数组

java - 重写克隆方法,但它仍然受到保护

java - 如何在没有请求的情况下获取 Spring session ?

jquery - 网站中的全屏背景图像看起来模糊

绘画时不会反射(reflect)对图像表面所做的更改

java - 为什么 java/android 需要在 XML 元素的开头有一个空格来解析它?

ios - 将 robovm-ios-bindings 导入到 Eclipse

java - Eclipse 问题 View 不再显示错误

java - 无法将 Object 或 instanceof 转换为 true 到 IProject || Java Eclipse 插件开发