Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ActionEvent-更改按钮按下时的JLabel_Java_Swing_Nullpointerexception_Awt_Actionevent - Fatal编程技术网

Java ActionEvent-更改按钮按下时的JLabel

Java ActionEvent-更改按钮按下时的JLabel,java,swing,nullpointerexception,awt,actionevent,Java,Swing,Nullpointerexception,Awt,Actionevent,我对Java还是个新手,在点击按钮后更改JLabel中的图像时遇到了麻烦。我没有得到任何编译器错误,但我得到了一个运行时错误 Line 107: l1.setIcon(icon); 线程“AWT-EventQueue-0”java.lang.NullPointerException中出现异常 } 完整错误消息: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at HomeController.act

我对Java还是个新手,在点击按钮后更改JLabel中的图像时遇到了麻烦。我没有得到任何编译器错误,但我得到了一个运行时错误

Line 107: l1.setIcon(icon); 
线程“AWT-EventQueue-0”java.lang.NullPointerException中出现异常

}

完整错误消息:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at HomeController.actionPerformed(HomeController.java:107)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:702)
at java.awt.EventQueue$4.run(EventQueue.java:700)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

您的问题源于您在主控制器中声明了一个全局变量:

private JLabel l1; 
另一个,本地,在构造函数中:

// Create Jlabels to hold blank image
JLabel l1 = new JLabel(blank);
在构造函数中,您使用与类中相同的名称定义了一个变量,但它是另一个变量。构造函数中的一个隐藏了类中的一个。 因此,最后,只有构造函数变量被初始化。如果在构造函数中这样更改代码

// Create Jlabels to hold blank image
l1 = new JLabel(blank);

然后,您的类中只有一个全局变量,并且不会得到NullPointerException。

将整个堆栈跟踪(包括行号)复制/粘贴为。
Clock clock1=new Clock()
为了更快地获得更好的帮助,请发布一个。很可能
clock1.getPicture()
返回null。所有此类java错误都带有堆栈跟踪。stacktrace告诉您具有空指针的代码行。如果你真的不能从那里弄明白,就把stacktrace贴出来。此外,在发布需要帮助的问题时,请发布发生错误的条件。节目什么时候开始?当按钮被点击时?只在交替的星期四?假设您的志愿助手从未见过您的程序或错误消息,并且希望获得足够的信息来帮助您。@BlackBox告诉我,在第107行“l1.setIcon(icon);”上返回了空指针?谢谢,总是简单的错误会让您大吃一惊。
// Create Jlabels to hold blank image
l1 = new JLabel(blank);