Пустой указатель, когда setIconImage ()

java swing nullpointerexception jframe embedded-resource

291 просмотра

1 ответ

Я пытаюсь изменить значок моего приложения 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линии.

Есть идеи?

Автор: cssGEEK Источник Размещён: 08.11.2019 11:19

Ответы (1)


-1 плюса

Я бы порекомендовал переместить вашу папку с изображениями в /srcпапку и использовать как:

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

использовать как :

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

Вы также можете создать метод с помощью get image from system и разместить его:

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"));
Автор: Iamat8 Размещён: 20.08.2016 01:40
Вопросы из категории :
32x32