【问题标题】:setIconImage intellij Project javax.swingsetIconImage intellij 项目 javax.swing
【发布时间】:2020-10-21 05:34:18
【问题描述】:

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

我试过了

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" 

我的项目结构类似于。你们知道如何使这项工作吗?

【问题讨论】:

    标签: java swing intellij-idea icons


    【解决方案1】:

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

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

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

    【讨论】:

    • 得到 java.lang.ExceptionInInitializerError 原因:cgui.FormApp.(FormApp. java:51) at controller.Main.(Main.java:39) 线程“main”中的异常
    • 并将 images 文件夹移动到 java 文件夹中。 images/icon.png 应该在目标/类中
    • 我的图标文件损坏了。我与互联网上的其他人一起尝试过,效果很好。非常感谢。
    猜你喜欢
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多