我为我的按钮添加了一个图像,但是当我运行该帧时,会抛出此异常。为什么?请帮助我。
init:
deps-jar:
compile-single:
run-single:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:138)
at ClientGUI.IdAndPasswordFrame.initComponents(IdAndPasswordFrame.java:91)
at ClientGUI.IdAndPasswordFrame.<init>(IdAndPasswordFrame.java:22)
at ClientGUI.IdAndPasswordFrame$4.run(IdAndPasswordFrame.java:200)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
BUILD SUCCESSFUL (total time: 1 second)
第138行:
public ImageIcon (URL location) {
this(location, location.toExternalForm());
}
line91:
jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/yahoo_1.gif"))); // NOI18N
我使用这种糟糕的检查(Peter Lang推荐),即:System.out.println(getClass()。getResource(“/ Images / yahoo_1.gif”));它返回null,为什么?请帮助我。
答案 0 :(得分:7)
这意味着,getClass().getResource("/Images/yahoo_1.gif")
会返回null
。
JavaDoc声明如果
,就会发生这种情况无法找到资源,或者调用者没有足够的权限来获取资源。
检查getResource
是否确实返回null
:
System.out.println(getClass().getResource("/Images/yahoo_1.gif"));
确保您的路径正确并且它在您的类路径中。
修改强>:
我刚刚尝试使用NetBeans。我创建了以下结构
Source Packages
Images
yahoo_1.gif
你的代码工作正常。这是你的结构吗?
尝试右键单击您的应用程序,然后选择Clean and Build
。
答案 1 :(得分:4)
为了解决此问题,需要将图像复制到 bin 目录中 - 而不是 src 目录中。
否则,您将始终在 getClass()。getResource(“image.png”)上获得null。 路径 not null 并且您可以将其设置为上述内容 - 仅当您在二进制目录中复制所需的图像时,项目的.class文件所在的位置。
这解决了这个问题。如果我帮助了,请告诉我。
伊万娜
答案 2 :(得分:1)
看起来getClass().getResource("/Images/yahoo_1.gif")
返回null
,即在类路径中找不到.gif文件。 (图像与图像可能?)
答案 3 :(得分:1)
传入的URL在此行中为空:
getClass().getResource("/Images/yahoo_1.gif")
来自JDK文档:
[getResource(..)returns]用于读取资源的URL对象, 如果资源不能,则返回null 发现或者调用者没有 获得足够的特权 资源
也许你的意思(“Images / yahoo_1.gif”) - 即相对路径不是绝对的?
答案 4 :(得分:1)
我遇到了同样的问题。对我有用的是:
答案 5 :(得分:0)
private class HandlerClass implements ActionListener{
public void actionperformed(ActionEvent event){
JOptionPane.showMessageDialog(null, String.format("%s", event.getActionCommand()));
}
}