无法使用 createIcon() 方法获取图像的路径 (url)
unable to get the path(url) of image with createIcon() method
因此,当我尝试使用我在按钮 class 内声明的 createIcon()
方法将图标放置到我的按钮时,它工作正常。
但是,
当我尝试将方法放入另一个 class(例如 Utils.java
)时,这样我就不需要在 class 中重新声明该方法对象需要图标,我收到此消息。
Unable to load image: /images/Save16.gif
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "java.net.URL.toExternalForm()" because "location" is null
*如果需要还有更多消息
这是按钮的 class,里面有 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;
}
}
这是我试图在另一个 class
中声明的 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
无法从我的按钮 class 中获取 path
,我尝试了几种替代方法,但它仍然没有用。我应该如何正确设置它?谢谢
这个有效:
URL url = getClass().getResource(path);
因为您获得了工具栏 class 的 class,这是所有其他 classes/files 所在的位置。
这行不通:
URL url = System.class.getResource(path);
因为“系统”class 是在 JDK 中找到的,而不是您的应用程序 classes。
我猜你可以试试:
URL url = Utils.class.getResource(path);
因此,当我尝试使用我在按钮 class 内声明的 createIcon()
方法将图标放置到我的按钮时,它工作正常。
但是,
当我尝试将方法放入另一个 class(例如 Utils.java
)时,这样我就不需要在 class 中重新声明该方法对象需要图标,我收到此消息。
Unable to load image: /images/Save16.gif
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "java.net.URL.toExternalForm()" because "location" is null
*如果需要还有更多消息
这是按钮的 class,里面有 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;
}
}
这是我试图在另一个 class
中声明的 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
无法从我的按钮 class 中获取 path
,我尝试了几种替代方法,但它仍然没有用。我应该如何正确设置它?谢谢
这个有效:
URL url = getClass().getResource(path);
因为您获得了工具栏 class 的 class,这是所有其他 classes/files 所在的位置。
这行不通:
URL url = System.class.getResource(path);
因为“系统”class 是在 JDK 中找到的,而不是您的应用程序 classes。
我猜你可以试试:
URL url = Utils.class.getResource(path);