偶尔会出现NullPointerException

时间:2013-03-11 17:29:37

标签: java swing

我有一个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文件夹中。

2 个答案:

答案 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响应的一种方法。