setIconImage()时为空指针

时间:2016-08-20 12:42:40

标签: java swing nullpointerexception jframe embedded-resource

我正在尝试更改Java应用程序的图标。 这是我项目的结构:

src
   gui
      FileCopyManager.java
images
    folder.png

现在我有以下代码:

public class FileCopyManager extends JFrame{
    public void changeIcon() {
        this.setIconImage(new ImageIcon(Toolkit.getDefaultToolkit()
                .getClass().getResource("../../images/folder.png")).getImage());
    }
    public FileCopyManager() {
        changeIcon();
        this.setSize(800,600);
        this.setVisible(true);
    }
    public static void main() {
        new SwingUtilities.invokeLater(()->{
            new FileCopyManager();
        });
    }
}

然而,当我尝试运行此代码时,我得到一个NullPointerException this.setIcon行。

有什么想法吗?

1 个答案:

答案 0 :(得分:-1)

我建议您将图片文件夹移至/src文件夹并用作:

src
 |---gui
 |  |-FileCopyManager.java
 |---images
    |-folder.png

用作:

public void changeIcon() {
    setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getClassLoader().getResource("images/folder.png")));
}

您还可以使用系统中的get image创建一个方法并将其放置:

protected static Image createImage(String path, String description) {
    URL imageURL = Main.class.getResource(path);         
    if (imageURL == null) {
        System.err.println("Resource not found: " + path);
        return null;
    } else {
        return (new ImageIcon(imageURL, description)).getImage();
    }
}

在构造函数中用作:

setIconImage(createImage("/images/folder.png", "icon"));