时运行Java应用程序从蚀我ImageIcon显示出来就好了。

但是,在创建一个罐子的路径图像显然得搞砸了。

有没有方法取的图像从罐子里在运行时所以我可以再打开它吗?或者,是否有一个更好的方式来做到这个吗?

我想要分发的一个罐子文件,如果可能的。

有帮助吗?

解决方案

创建一个 ImageIcon 从图像的文件在同一个罐子你代码载入:

new javax.swing.ImageIcon(getClass().getResource("myimage.jpeg"))

Class.getResource 返回的网址资源(或 null!). ImageIcon 有一个构造,载荷从一个网址。

构建一个网址为资源在一个罐子里不上你"类路径",请参阅的文档 java.net.JarURLConnection.

其他提示

你可以尝试一样的东西:

InputStream stream = this.getClass().getClassLoader().getResourceAsStream("/images/image.jpg");

在你的罐子文件,则可能有一个目录的结构:

MyJAR.jar
-com(类文件在里面)
-图像
----image.jpg

这是为我工作到负荷和设置内容的窗背景图像:

罐子(或建造道路)包含:

 - com
 - img
 ---- bg.png

java包含:

JFrame f = new JFrame("Testing load resource from jar");
try {
    BufferedImage bg = ImageIO.read(getClass().getResource("/img/bg.png"));
    f.setContentPane(new ImagePanel(bg));
} catch (IOException e) {
    e.printStackTrace();
}

测试和工作在这两个罐子和unjarred(是的技术术语)执行。

顺便说一句 getClass().getClassLoader().getResourceAsStream("/img/bg.png") -我尝试一回我的空输入流.

在//需要将物品寄8.1我做了什么是包括文件夹中的图标和其他图像叫 资源 内部 src 文件夹中的项目文件。所以每当我建立的 罐子 文件夹中包括在那里。该文件树应该是这样的:

  • src(Java文件在来源packges在这里)
  • **包装你的命名项目**

    • file.java
  • 资源

    • image.jpg

该代码应该是这样的:

jToggleButton1.setIcon(new javax.swing.ImageIcon(this.getClass().getResource("/resources/image.jpg")));

载图像在从罐子文件在运行时间是一样的装载图像在执行自IDE e。g//需要将物品寄的差异是,当装载的图像,从罐子文件的路径必须是正确和它的 情况敏感的 (很重要)。这对我的作品

 image1 = new javax.swing.ImageIcon(getClass().getResource("/Pictures/firstgame/habitat1.jpg"));
        img = image1.getImage().getScaledInstance(lblhabitat1.getWidth(), lblhabitat1.getHeight(), Image.SCALE_SMOOTH);
        lblhabitat1.setIcon(new ImageIcon(img));

如果在p"/Pictures/firstgame/habitat1.jpg"是在较低的情况下,它不会的工作。检查的空间,情况和拼写

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top