【发布时间】:2017-03-01 16:02:41
【问题描述】:
我是 Java/Swing 的新手,我想做一个简单的应用程序来激发我的兴趣并在此过程中学到一些东西。
我的小型 Java 应用程序背后的最初想法是通过单击按钮将图像加载到我的 jLabel 上,然后我使用这段代码让它工作。
试试 {
Image img = ImageIO.read(getClass().getResource("/folder/14643106_10210357322307073_1328313792_n.jpg"));
jLabel8.setIcon(new ImageIcon(img));
}
catch(IOException e)
{
e.printStackTrace();
}
即使它在我的 NetBeans 环境中完美运行,但如果我运行我的 .jar 文件,图像不会出现。如果我用 .rar 工具打开我的 .jar 文件,我可以看到我在 NetBeans 项目中保存我的图像的文件夹,因此我假设它包含在 .jar 文件中,但不知何故,当应用程序运行时它没有被访问.
我尝试将我的图像保存为一组 HEX 值,然后将其传递给 jLabel,但我遇到了同样的问题,即使该解决方案在我的 NetBeans 项目中也能正常工作。
我的问题是:我应该以不同的方式加载图像吗?我的路径可能是错误的吗?
我在多个不同版本中看到过这个问题,但不幸的是,它们都没有以任何方式帮助我。如果这个问题被问得太频繁,我很抱歉。
【问题讨论】:
-
您是说您的 .jar 文件包含
folder/14643106_10210357322307073_1328313792_n.jpg条目吗? -
Add images to jar的可能重复
-
@VGR 是的,我用 winrar 打开了它,里面有一个文件夹“文件夹”,里面有我的图像和其他的。这让我有点困惑,因为在这种情况下它无法获取该图像吗?
-
我首先将
getClass().getResource调用移动到单独的行,并打印返回值,只是为了验证它不为空。当然,请确保您没有遇到异常。 (一般来说,传播异常是一种很好的做法,比如throw new RuntimeException(e);,而不是仅仅打印堆栈跟踪。如果应用程序无法正确构建窗口,您不希望应用程序继续运行,对吗?)
标签: java image swing netbeans jar