0

对于探索未知领域(有效位置和阻塞位置的网格)的机器人上的 JAVA 项目,我正在玩一些我目前不太了解的东西。无论如何,我试图改进我们作为如何进行的示例给出的基本 GUI,它已经完成了一个文本字段和各种 unicode 字符来表示地图和机器人。我试图通过重写paint方法并在屏幕上绘制彩色矩形来表示地图来做到这一点。当程序启动时,我会看到下面的运行时异常,但窗口会加载(尽管由于某种原因,顶部的 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)
4

1 回答 1

1

我建议您从阅读Swing 教程开始。它包含一个解释绘画是如何完成的部分。一方面,您应该覆盖 paintComponent() 方法。从上面的错误看来,您的代码在 paint() 方法中。

要学习一些东西,你应该从小处着手,然后当你遇到问题时,你可以发布一个SSCCE 来显示问题。

于 2009-12-08T17:03:23.357 回答