Вопрос

Я играю с вещами, которые на данный момент не совсем понимаю для проекта 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 показывая проблему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top