[코드스쿼드 코코아 과정_자바] AWT쓰레드와 repaint()

Kyu·2020년 11월 30일
0

paint()를 호출한 적이 없는데 왜 실행될까?

  • AWT쓰레드에 의해 자동적으로 호출되어짐
  • 평소에 대기상태였다가, 화면이 갱신되어야할 상황이면 paint()나 update()를 호출

    화면이 갱신되어야할 상황:

    • 처음 화면에 나타날 때
    • 다른 화면에 가려져 있던 부분이 다시 화면에 나타날 때
    • 아이콘화 되어있다가 다시 화면에 나타날때

즉, 지속적으로 무언가 화면에 그려져야 할 상황이면 강제로 paint를 해야함. 게임이라던가 그림판이라던가 말이다.

repaint()

  • "화면이 갱신되어야할 상황"이 아닐 때 갱신하고 싶으면 repaint()를 쓰면 된다.
  • repaint()는 AWT쓰레드에게 화면을 다시 그릴 것을 요청한다
  • 그 이후, AWT쓰레드는 update()를 호출하고 update()는 다시 paint()를 호출한다.
  • 여기서 update()는 화면을 지우고 paint(Grapghics g)를 호출한다
    출처: 남궁성 자바의 정석
profile
TIL 남기는 공간입니다

0개의 댓글