gpt4 book ai didi

java - 图像未在 JLable 中加载

转载 作者:行者123 更新时间:2023-12-01 11:07:23 25 4
gpt4 key购买 nike

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

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");
}

还将文件字符串更改为其他内容也会导致程序崩溃,两者都尝试过

“资源/Barcode-icon.png”“src/Resources/Barcode-icon.png”它会导致 ImageIO.read(...) 方法

的输入为空

最佳答案

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

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

“/Resources/Barcode-icon.png”并不意味着您应该在计算机上找到该文件,而是意味着如果您解压缩要在其中分发应用程序的 jar 文件,则应该找到它。

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

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

例如src/dir/lena1.png 通过 getResourcesAsStream("dir/lena1.png") 访问

另请注意 getResourcesAsStream("/dir/lena1.png") 将不起作用。

关于java - 图像未在 JLable 中加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32803016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com