我正在尝试更改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
行。
有什么想法吗?
答案 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"));