2015-10-11 2 views
0

Я новичок в java-графике и не понимаю, почему мой setSolor выбрасывает nullpointer. Попытка сделать что-то простое, как это:Java Graphics SetColor дает NullPointerException

public void drawEllipse(int x, int y, Color color){ 
    Graphics g = null; 
    Graphics2D g2 = (Graphics2D) g; 
    g2.setColor(color); 
    Ellipse2D.Double ellipse = new Ellipse2D.Double(x, y,1,1); 
    g2.draw(ellipse); 
} 
+0

Хорошо, это один своего рода соскакивает страницы, как только вы сосредоточены на коде. У вас есть g.equals (g2) == true. Я говорю, что это действительное заявление. Выньте, что там, и сделайте это, как говорит вам книга. –

ответ

2

Ну проблема в том, что вы инициализации g с null и поэтому g2 также null, который вызывает, за исключением

Edit:

Если вы хотите нарисовать что-нибудь с AWT вы должны перезаписать метод paint. Там вы получите графический объект. Или вы вызываете getGraphics на контейнер, который также даст вам графический объект.

Но я думаю, что первый вариант является один для использования в целом

+0

Как создать новый графический объект/правильную форму? компилятор не позволяет мне делать Графика g = новая графика() –

+0

спасибо за вежливость, полный мозговой пердит с моей стороны. иногда вы пишете что-то, чтобы сделать компилятор счастливым и забыть почему! –

+1

Не используйте getGraphics, это не то, как картина работает в Swing, кроме того, что она может возвращать нуль, она представляет собой не что иное, как снимок того, что было написано в последнем цикле краски, что означает, что в любой момент будущее можно было бы заменить. Лучше использовать paintComponent компонента Swing, так вы знаете, когда вам нужно обновить графику – MadProgrammer

Смежные вопросы