Что это за исключение для резьбы/краски?
-
18-09-2019 - |
Вопрос
Я играю с вещами, которые на данный момент не совсем понимаю для проекта JAVA о роботе, исследующем неизвестную территорию (сетка действительных и заблокированных позиций).В любом случае, я попытался улучшить базовый графический интерфейс, который нам дали в качестве примера дальнейших действий. Это было сделано с помощью текстового поля и различных символов Юникода для представления карты и робота.Я попытался сделать это, переопределив метод рисования и нарисовав на экране цветные прямоугольники, представляющие карту.Когда программа запускается, мне появляется исключение во время выполнения, приведенное ниже, но окно загружается (хотя по какой-то причине все JButtons вверху невидимы, пока я не наведу на них указатель мыши), и с этого момента оно работает нормально.
Я зашел так далеко методом проб и ошибок и экспериментировал с примерами, которые нашел в Интернете, но думаю, что есть что-то фундаментальное, чего я здесь не уловил.
Спасибо за любой совет, который вы можете мне дать здесь.
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)
Решение
Предлагаю начать с прочтения Учебное пособие по свингу.В нем есть раздел, в котором объясняется, как выполняется покраска.Во-первых, вам следует переопределить метод PaintComponent().Судя по приведенной выше ошибке, ваш код находится в методе Paint().
Чтобы чему-то научиться, нужно начинать с малого, а затем, когда у вас возникнут проблемы, вы можете опубликовать SSCCE показывая проблему.