Java 在';他失败了

Java 在';他失败了,java,multithreading,swing,stack-trace,Java,Multithreading,Swing,Stack Trace,我正在使用Swing,它给了我这个堆栈跟踪: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at com.sun.java.swing.plaf.windows.WindowsButtonUI.getXPButtonState(Unknown Source) at com.sun.java.swing.plaf.windows.WindowsButtonUI.paintXPButtonBackgroun

我正在使用Swing,它给了我这个堆栈跟踪:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.sun.java.swing.plaf.windows.WindowsButtonUI.getXPButtonState(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsButtonUI.paintXPButtonBackground(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsButtonUI.paint(Unknown Source)
at javax.swing.plaf.ComponentUI.update(Unknown Source)
at javax.swing.JComponent.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JLayeredPane.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at java.awt.GraphicsCallback$PaintCallback.run(Unknown Source)
at sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source)
at sun.awt.SunGraphicsCallback.runComponents(Unknown Source)
at java.awt.Container.paint(Unknown Source)
at java.awt.Window.paint(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.access$700(Unknown Source)
at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
我尝试过调试,但在
EventDispatchThread.pumoEventsForFiler(int,Conditional,EventFilter)行中的
线程[AWT-EventQueue-0]
中失败:不可用

我真的不太确定该从哪里着手。有人能解释一下如何处理没有行信息的堆栈跟踪吗

编辑:
基本上,我尝试在Swing中进行MVC,我的ButtonModel非常糟糕。所以我删除了它,问题就消失了。我会发布我的代码,但是Eclipse没有把文件带回来。我的按钮仍然不起作用,但这是一个全新的问题

当您没有这条线时,有时可以查看整个方法以了解可能出现的情况。在您的情况下,似乎只有一个可能的原因:您已将按钮的型号设置为
null
。Swing的button类似乎允许这样做,但Windows的外观并没有对此进行检查。

当您没有该行时,有时可以查看整个方法以查看可能出现的情况。在您的情况下,似乎只有一个可能的原因:您已将按钮的型号设置为
null
。Swing的button类似乎允许这样做,但Windows的外观并没有对此进行检查。

在这种情况下,唯一的方法是切换到使用行信息编译的jdk。我不知道错误来自何处,所以我真的不知道用按钮来做一些奇怪的事情时应该使用什么代码?如果是这样,发布代码……如何切换到使用行信息编译的jdk?我不知道有没有jdk没有。检查eclipse中的项目设置以使用jdk,而不是jre。在这种情况下,唯一的方法是切换到使用行信息编译的jdk。我不知道错误来自何处,所以我不知道要发布什么代码才能用按钮执行一些古怪的操作?如果是这样,发布代码……如何切换到使用行信息编译的jdk?我不知道有没有jdk没有。检查eclipse中的项目设置以使用jdk,而不是jre。+1我得出了相同的结论。我不知道
模型
的合同,但是:它是自动设置的还是什么。@Marko Topolnik:最初有一个默认模型集。通常,您不会更改它,因为它实现了所需的行为,例如按钮、单选按钮或切换。特定于应用程序的行为通常通过
操作
接口实现。+1我得出了相同的结论。我不知道
模型
的合同,但是:它是自动设置的还是什么。@Marko Topolnik:最初有一个默认模型集。通常,您不会更改它,因为它实现了所需的行为,例如按钮、单选按钮或切换。特定于应用程序的行为通常通过
操作
接口实现。