【发布时间】:2010-05-17 14:17:04
【问题描述】:
当我运行我的应用程序时,我收到以下错误:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.text.FlowView$FlowStrategy.layoutRow(FlowView.java:546)
at javax.swing.text.FlowView$FlowStrategy.layout(FlowView.java:460)
at javax.swing.text.FlowView.layout(FlowView.java:184)
at javax.swing.text.BoxView.setSize(BoxView.java:380)
at javax.swing.text.BoxView.updateChildSizes(BoxView.java:349)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:331)
at javax.swing.text.BoxView.layout(BoxView.java:691)
at javax.swing.text.BoxView.setSize(BoxView.java:380)
at javax.swing.plaf.basic.BasicTextUI$RootView.setSize(BasicTextUI.java:1702)
at javax.swing.plaf.basic.BasicTextUI.modelToView(BasicTextUI.java:1034)
at javax.swing.text.DefaultCaret.repaintNewCaret(DefaultCaret.java:1291)
at javax.swing.text.DefaultCaret$1.run(DefaultCaret.java:1270)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
由于该错误未提及我的任何课程,我将如何查找导致此问题的原因?
如果我尝试:public void notifyChatMessage(String message){...} 错误消失(不)。
编辑:经过进一步测试,结果发现上面也产生了错误。
但如果我尝试:public void notifyChatMessage(Object message){...} 则会报告错误。
请指教。
编辑:
public void notifyChatMessage(String message){
AppMessage appMessage = new AppMessage(AppMessage.Target.Chat, message);
setChanged();
notifyObservers(appMessage);
}
应用消息:
public class AppMessage implements Serializable {
/**
* Message header for target: game, chat
*/
public enum Target {
Game, Chat
}
/**
* Holds target
*/
public Target target;
/**
* Holds state message
*/
public Object message;
/**
* Construct using parameter data
* @param target
* @param message
*/
public AppMessage(Target target, Object message){
this.target = target;
this.message = message;
}
}
编辑:即使有错误报告,程序继续运行,我看不到任何性能不足,即。运行时出错,这使得定位问题的任务变得更加复杂。
编辑:当我通过 netbeans 中的调试器运行它时,我得到:调试器在无法编译的源代码上停止。
编辑:由于跨线程 GUI 更新而引发异常。调查 invokeLater 和 invokeAndWait 的解决方案。
解决方案: invokeAndWait
【问题讨论】:
-
您能否发布更多关于错误发生位置的代码?
-
您正在传递一个空参数,该参数对一种方法很好,但对另一种方法错误。发布更多代码。
-
这就是我所说的..错误不会自行本地化..我不知道。
-
您已经成功识别了
notifyChatMessage()方法;你从哪里称呼它?你在里面做什么? -
@Yuval A:可能但具体在哪里?!如果它没有在我的代码中提及位置,我该如何找到它。很好的提示。我将不得不慢慢修改整个代码。
标签: java swing exception-handling