2015-09-26 67 views
0

我正在为项目制作启动画面,其中显示图标并显示加载栏。加载栏等工程。这里是图像加载并分配代码:图像未加载JLable

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

将其加入飞溅类的构造函数,但它表明了破碎的形象图标运行时...

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

编辑:添加了此代码,从来没有发射:

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

也改变文件串到别的东西导致程序崩溃,都尝试

“资源/条形码的icon.png” “SRC /资源/条形码的icon.png” 也就导致空输入ImageIO.read(...)方法

回答

1

资源不是文件,所以文件存在并不能证明资源存在,实际上不可能相同的路径对两者都有效。资源通常在jar文件本身中,尽管它也可以位于classpath中目录的相应子目录中。

将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”)将无法正常工作。

+0

该项目将被分配作为一个罐子,这里的资源仍然无法正常工作,已经过测试 – Kyle

+0

它似乎是'lblSplash = new JLabel(新的ImageIcon(buff))'的问题;',而不是资源加载。我在这个问题中说过:“另外将文件字符串更改为其他内容会使程序崩溃,同时尝试使用” – Kyle

+0

“文件字符串会影响程序尝试加载的内容,但由于更改它会使其崩溃,所以它必须表示原始文件存在它可以访问它 – Kyle

0

唉...它的小东西...

使用JLable.setIcon(buff)作品,其中的buff是资源,而不是流

+0

我会接受比我自己更好的答案 – Kyle