我有一个java应用程序,我偶尔会遇到java.lang.NullPointerException
。我有这个应用程序在信息亭工作,当这个错误发生时,它会卡住并导致很多问题。
错误是:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:204)
at GUI.newCardPanel.backButton1MousePressed(newCardPanel.java:1470)
at GUI.newCardPanel.access$11000(newCardPanel.java:36)
at GUI.newCardPanel$64.mousePressed(newCardPanel.java:1091)
at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280)
at java.awt.Component.processMouseEvent(Component.java:6386)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3268)
at java.awt.Component.processEvent(Component.java:6154)
at java.awt.Container.processEvent(Container.java:2045)
at java.awt.Component.dispatchEventImpl(Component.java:4750)
at java.awt.Container.dispatchEventImpl(Container.java:2103)
at java.awt.Component.dispatchEvent(Component.java:4576)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4633)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4294)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4227)
at java.awt.Container.dispatchEventImpl(Container.java:2089)
at java.awt.Window.dispatchEventImpl(Window.java:2518)
at java.awt.Component.dispatchEvent(Component.java:4576)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:672)
at java.awt.EventQueue.access$400(EventQueue.java:96)
at java.awt.EventQueue$2.run(EventQueue.java:631)
at java.awt.EventQueue$2.run(EventQueue.java:629)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:116)
at java.awt.EventQueue$3.run(EventQueue.java:645)
at java.awt.EventQueue$3.run(EventQueue.java:643)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:642)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
第1470行:
backButton1.setIcon(new ImageIcon(new ImageIcon(getClass().getResource("/imagenes/sing-in-pres.png")).getImage()));
public class newCardPanel extends javax.swing.JPanel { //This one is the 36
1091 :( Netbeans自动生成的代码)
public void mousePressed(java.awt.event.MouseEvent evt) {
backButton1MousePressed(evt); //This one is the 1091
}
图像位于src
文件夹中。
答案 0 :(得分:2)
如果你看一下ImageIcon的来源,你会看到:
public ImageIcon (URL location) {
this(location, location.toExternalForm());
}
这表示您为URL传递空值。 这意味着您的代码
getClass().getResource("/imagenes/sing-in-pres.png")
返回null。
从那里调试。
答案 1 :(得分:1)
它有时会发生 。
有时可能是错误同步的结果。应在event dispatch thread上构建和操作Swing GUI对象 。必须同步对共享数据的访问。 SwingWorker
是在example为后台加载图片时保持GUI响应的一种方法。