我正在玩一些我目前不太理解的东西,用于一个机器人上的 JAVA 项目,探索一个未知的领域(有效位置和阻塞位置的网格)。无论如何,我尝试改进基本的 GUI,我们给出了如何继续的示例,它是通过文本字段和各种 unicode 字符来表示 map 和机器人来完成的。我尝试通过重写绘制方法并在屏幕上绘制彩色矩形来表示 map 来实现此目的。当程序启动时,我会看到下面的运行时异常,但窗口会加载(尽管由于某种原因,顶部的 JButton 都是不可见的,直到我将鼠标悬停在它们上面),并且从那时起功能正常。
到目前为止,我是通过反复试验并使用我在网上找到的示例来实现这一点的,但我想这里有一些基本的东西我还没有掌握。
感谢您在这里给我的任何建议。
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Controller.paint(Controller.java:156)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknow
n Source)
at java.awt.event.InvocationEvent.dispatch(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)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Controller.paint(Controller.java:156)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknow
n Source)
at java.awt.event.InvocationEvent.dispatch(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)
最佳答案
我建议您首先阅读 Swing tutorial 。它包含一个部分解释绘画是如何完成的。一方面,您应该重写 PaintComponent() 方法。从上面的错误看来,您的代码位于 Paint() 方法中。
要学习一些东西,你应该从小处开始,然后当你遇到问题时,你可以发布SSCCE显示问题。
关于java - 这个线程/绘制异常是关于什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1868292/