所以当我试着用 createIcon()
方法,它工作正常。
但是,
当我试图把这个方法放到另一个类中时(比如 Utils.java
),这样我就不需要在对象需要icon的类中重新声明方法,我得到这个消息。
无法加载图像:/images/save16.gif
线程“awt-eventqueue-0”java.lang.nullpointerexception中出现异常:无法调用“java.net.url.toexternalform()”,因为“location”为null
- 如果需要,还有更多的信息
这是包含createicon()方法的按钮类
public class Toolbar extends JToolBar implements ActionListener{
private final JButton saveBtn;
public Toolbar() {
saveBtn = new JButton();
saveBtn.setIcon(createIcon("/images/Save16.gif"));
saveBtn.setToolTipText("Save");
saveBtn.addActionListener(this);
add(saveBtn);
}
private ImageIcon createIcon(String path) {
URL url = getClass().getResource(path);
if(url == null) {
System.err.println("Unable to load image: " + path);
}
ImageIcon icon = new ImageIcon(url);
return icon;
}
}
这是我试图在另一个类中声明的createicon()方法
public class Utils {
public static ImageIcon createIcon(String path) {
URL url = System.class.getResource(path);
if(url == null) {
System.err.println("Unable to load image: " + path);
}
ImageIcon icon = new ImageIcon(url);
return icon;
}
}
这改变了 setIcon()
方法分为:
saveBtn.setIcon(Utils.createIcon("/images/Save16.gif"));
从我在消息中分析的情况来看,问题可能是 url
这不能得到 path
从我的按钮的类,我已经尝试了几个替代品,但它仍然没有工作。我应该如何正确设置它?谢谢
1条答案
按热度按时间uurity8g1#
这样做有效:
因为您得到了toolbar类的类,它是所有其他类/文件所在的位置。
这不起作用:
因为“system”类是在jdk中找到的,而不是在应用程序类中。
我想你可以试试: