1

我制作了一个应用程序,其中要为图标加载一些图像。当我使用

imageOpen = Toolkit.getDefaultToolkit().getImage("Images\\open.png");

但是当我将它导出为 jar 时,图像没有显示出来然后在这里和那里我尝试了一些东西,但在这两种情况下,URL 都返回 null

URL u = this.getClass().getResource("Images\\open.png");
imageOpen = Toolkit.getDefaultToolkit().createImage(u);

另一个案例

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL resource = classLoader.getResource("Images\\open.png");
imageOpen = Toolkit.getDefaultToolkit().createImage(resource);

谁能告诉我为什么我会得到 null ,我什至尝试了 "\Images\open.png" 、 "/Images/open.png" 和 ".\Images\open.png" 作为我使用 eclipse 的路径和图像存储在名为 Images 的文件夹的父目录中,源文件位于 src>master

4

3 回答 3

3

使用images/open.png. 正斜杠适用于任何操作系统。此外,jar tvf您的 jar 文件以确保图像目录Images按照您的想法大写。可能不是,如果您使用的是 Windows(或不区分大小写的文件系统),它可能在目录中工作正常,但不能从 jar 中工作。

于 2012-11-01T17:44:04.433 回答
1

您确定 url 为空还是使用 imageOpen 时出现问题?有时 Toolkit.getDefaultToolkit().createImage() 会立即返回,但图像未完全加载且 imageOpen 不可用。您需要等待图像的加载。这是java代码

JLabel label = new JLabel();
MediaTracker media = new MediaTracker(label);

Image imagen = Toolkit.getDefaultToolkit().getImage ("fichero.gif");
media.addImage(imagen, 23);
try
{
   media.waitForID(23);
}
catch (InterruptedException e)
{
   ...
}
于 2012-11-01T18:01:45.970 回答
0

在为 jar 制作资源包并从该文件中获取路径的帮助下,我能够解决我的问题

于 2012-11-28T04:03:38.890 回答