【发布时间】:2016-08-20 12:42:40
【问题描述】:
我正在尝试更改我的 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();
});
}
}
但是,当我尝试运行此代码时,我在
this.setIcon 行。
有什么想法吗?
【问题讨论】:
-
通过使用中间变量和/或使用调试器将行拆分为更多行。您可能还应该在使用它之前确保资源存在,如果不存在则抛出异常。
-
在 SO 搜索中搜索 classloader.getresource
-
getResource() 可能返回 null。资源路径错误。试试“/images/folder.png”
-
getResource("../../images/folder.png")返回null的概率为 99%,因为相对路径与您认为的位置无关,或者文件未部署在您认为的位置,或者文件不存在。
标签: java swing nullpointerexception jframe embedded-resource