我尝试了几种方法将图标添加到JFrame。当我使用源代码运行它时,每个方法都能正常工作。
例如:
jframe.setIconImage(Toolkit.getDefaultToolkit().getImage("iconimages/icon.png"));
但是当我使用jar文件运行它们时,它们都不起作用。我知道问题出在图像文件的路径上。我该如何解决这个问题?
编辑:
public Ui() {
initComponents();
setLocationRelativeTo(null);
this.setIconImage(getImageIcon("icon.png").getImage());
}
private ImageIcon getImageIcon(String fileName) {
String imageDirectory = "iconimages/";
imgURL = getClass().getResource(imageDirectory + fileName);
return new ImageIcon(imgURL);
}
我试过这个,但现在我得到一个空指针异常。
--------------------------------------------------------------------------------
编辑[解决方案]:我找到了解决方案。
我在路径中添加了../
,它完美无缺! :d
ImageIcon imageIcon = new ImageIcon("../imageicons/icon.png");
this.setIconImage(imageIcon.getImage());
感谢大家帮助我。 :)
答案 0 :(得分:4)
您应该使用网址。像这样:
/**
* Loads and returns an {@link Image} resource.
* @param fileName name of the image resource.
* @return Image as resource.
*/
public Image getResourceImage(String fileName) {
String imageDirectory = "images/";
URL imgURL = getClass().getResource(imageDirectory + fileName);
Image image = null;
try {
image = ImageIO.read(imgURL);
} catch (IOException e) {}
return image;
}