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());
我在为我的 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());