paint()를 호출한 적이 없는데 왜 실행될까?
- AWT쓰레드에 의해 자동적으로 호출되어짐
- 평소에 대기상태였다가, 화면이 갱신되어야할 상황이면 paint()나 update()를 호출
화면이 갱신되어야할 상황:
- 처음 화면에 나타날 때
- 다른 화면에 가려져 있던 부분이 다시 화면에 나타날 때
- 아이콘화 되어있다가 다시 화면에 나타날때
즉, 지속적으로 무언가 화면에 그려져야 할 상황이면 강제로 paint를 해야함. 게임이라던가 그림판이라던가 말이다.
repaint()
- "화면이 갱신되어야할 상황"이 아닐 때 갱신하고 싶으면 repaint()를 쓰면 된다.
- repaint()는 AWT쓰레드에게 화면을 다시 그릴 것을 요청한다
- 그 이후, AWT쓰레드는 update()를 호출하고 update()는 다시 paint()를 호출한다.
- 여기서 update()는 화면을 지우고 paint(Grapghics g)를 호출한다
출처: 남궁성 자바의 정석