java - 无法使用 createIcon() 方法获取图像的路径(url)
问题描述
因此,当我尝试使用createIcon()
在按钮类中声明的方法将图标放在按钮上时,它可以正常工作。
但,
当我尝试将方法放在另一个类中(比如Utils.java
),这样我就不需要在对象需要图标的类中重新声明方法时,我会收到此消息。
无法加载图像:/images/Save16.gif
线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException:无法调用“java.net.URL.toExternalForm()”,因为“位置”为空
*如果需要,还有更多信息
这是按钮的类,里面有 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
从我的按钮类中获取,我尝试了几种替代方法,但仍然没有用。我应该如何正确设置它?谢谢
解决方案
这有效:
URL url = getClass().getResource(path);
因为您获得了 Toolbar 类的类,这是所有其他类/文件所在的位置。
这不起作用:
URL url = System.class.getResource(path);
因为在 JDK 中找到了“系统”类,而不是在您的应用程序类中。
我猜你可以试试:
URL url = Utils.class.getResource(path);
推荐阅读
- javascript - 过滤数组中的项目 - 在 JSON 中添加元素
- apache-kafka - FileRecords 的 KafkaException 大小在写入期间被截断:旧大小 4754,新大小 0
- c# - EF Core 使用 DBSet 属性名称...有时
- javascript - 减少不适用于jQuery吗?如何计算 const 变量中的元素?
- javascript - 如何将模板文字字符串用于带有 JSX 的模块化 css?
- c# - 对新 ihttpfactory 中 httpclient 的生命周期感到困惑
- swiftui - 删除表格中的行导致致命错误:索引超出范围
- javascript - 我需要帮助来弄清楚如何循环播放此幻灯片
- vb.net - 插槽能力
- php - 自定义 WooCommerce 产品查询不起作用