import javax.swing.*;
import java.awt.*;
public class Game extends JFrame{
public Game(){
setResizable(false);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(300, 300);
setLocationRelativeTo(null);
setVisible(true);
}
public void paint(Graphics g){
g.setColor(Color.BLACK);
g.fillOval(100, 100, 100, 100);
}
public static void main(String[] args) {
Game game = new Game();
game.paint(null);
}
}
Asked
Active
Viewed 73 times
-2
Wuzaza
- 19
2 Answers
4
По поводу исключения NPE можно и нужно прочитать здесь: Что такое Null Pointer Exception и как его исправить?
Нет смысла сюда копировать такой большой текст.
Про awt и метод paint можно сказать следующее:
движок awt вызывает метод paint каждый раз, когда оперативная система сообщает, что надо нарисовать что-то на холсте. Он вызывается когда в самый первый раз создается окно или когда минимизируем/максимизируем окно, изменям размер мышкой и т.д.
Такие сообщения отсылаются постоянно, неявно, виртуальной машиной. И, как следствие, вызывать его нет нужды.
Т.е. в вашем случае достаточно написать
public static void main(String[] args) {
Game game = new Game();
}
Создастся окно и автоматически подхватится paint
Алексей Шиманский
- 73,186
3
Вам просто не нужно вызывать paint(), он вызывается неявно виртуальной машиной.
Sergey Gornostaev
- 66,575
null. – Alexander Petrov Apr 29 '16 at 11:38