setIconImage 智能项目 javax.swing

setIconImage intellij Project javax.swing

我在为我的 swing 项目在 intellij 中设置图标时遇到了问题。

我试过了

iconpath = execPath + File.separator +  "images" + File.separator + "icon.png";

this.setIconImage(new ImageIcon(getClass().getResource(iconpath)).getImage());

但是得到了

java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(ImageIcon.java:217)
    at cgui.FormApp.<init>(FormApp.java:52)
    at controller.Main.<clinit>(Main.java:39)
Exception in thread "main"

iconpath = execPath + File.separator +  "images" + File.separator + "icon.png";
InputStream resource = getClass().getResourceAsStream(iconpath);

Image image = null;
try {
      image = ImageIO.read(resource);
} catch (IOException e) {
  e.printStackTrace();
}
this.setIconImage(new ImageIcon(image).getImage());

得到了

java.lang.ExceptionInInitializerError
Caused by: java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(ImageIO.java:1348)
    at cgui.FormApp.<init>(FormApp.java:58)
    at controller.Main.<clinit>(Main.java:39)
Exception in thread "main" 

我的项目结构如下。你们知道如何让它发挥作用吗?

您得到图像路径相对到Main.java。

您应该使用 getClassLoader() 从绝对路径获取图像。

this.setIconImage(new ImageIcon(getClass().getClassLoader().getResource("images/icon.png")).getImage());