图像未在JLable中加载

时间:2015-09-26 23:22:00

标签: java netbeans

我正在为一个项目制作一个启动画面,它会显示一个图标并显示一个加载栏。加载栏等工作。这是图像加载和分配代码:

initComponents();
BufferedImage buff = null;
try
{
    buff = ImageIO.read(getClass().getResourceAsStream("/Resources/Barcode-icon.png"));
} catch (IOException e)
{
    e.printStackTrace();
}
lblSplash = new JLabel(new ImageIcon(buff));
this.setVisible(true);

这被添加到Splash类的构造函数中,但它在运行时显示了损坏的图像图标...

感谢任何帮助(强调帮助,我想学习,没有代码示例答案

编辑:将此添加到代码中,从未解雇过:

if(new File("/Resources/Barcode-icon.png").exists())
{
    JOptionPane.showMessageDialog(null, "exists");
}

同样将文件字符串更改为其他内容会导致程序崩溃,同时尝试了

"资源/条码-的icon.png" " SRC /资源/条码-的icon.png" 它导致ImageIO.read(...)方法

的空输入

2 个答案:

答案 0 :(得分:1)

资源不是文件,因此文件现有并不能证明资源存在,实际上同一路径不太可能同时适用于两者。资源通常位于jar文件本身,尽管它也可以位于类路径上目录的相应子目录中。

将getResourceAsStream()的结果放在变量中以确保它不为空。

" /Resources/Barcode-icon.png"并不意味着您应该在计算机上找到该文件,这意味着如果您解压缩正在分发应用程序的jar文件,您应该找到它。

您需要告诉构建系统或IDE将其放在jar文件中。通常这意味着放入一个特殊的目录,但不是你传递给getResourcesAsStream()的目录。

使用Netbeans Ant项目(Java的默认类型),您将文件放在src子目录下,但不要将src /添加到资源字符串。

例如 使用getResourcesAsStream访问src / dir / lena1.png(" dir / lena1.png")

另请注意,getResourcesAsStream(" /dir/lena1.png")将无效。

答案 1 :(得分:0)

叹息......它的小事......

使用JLable.setIcon(buff)可以使用buff是资源,而不是流