我正在NetBeans中创建一个Java应用程序,并且有以下代码,有时在单击按钮以将提供的图像和字符串放在GUI Builder中的JLabel上后有时会被调用:

helpLabel.setIcon(new ImageIcon("/bepe/resources/" + e.imageFile));
helpLabel.setText(e.getMessage());


图像位于子目录“资源”中,该子目录与程序文件位于同一位置。标签的文本已按预期设置,但未出现图像。如果我提前在GUI Builder中设置了图像,则会显示该图像。为此生成的代码是

helpLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/bepe/resources/orIntro.png")));


但是,当我尝试以相同方式设置图标时,会出现运行时错误。我设置图像的方式有问题吗?

最佳答案

该声明假定图像位于应用程序的运行时类路径上,并通过URL访问它。这是访问Jar中资源的方法。

helpLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/bepe/resources/orIntro.png")));


该声明假定String参数表示File路径。对于(大概)在Jar中的“应用程序资源”,它将不起作用。

helpLabel.setIcon(new ImageIcon("/bepe/resources/" + e.imageFile));




始终使用getResource,并确保图像在运行时类路径上。

09-28 15:01