이제 AWT를 이용해서 그림을 그리는 방법에 대해서 알아볼 차례입니다.
paint()는 컴포넌트에 그림을 그리기 위한 것으로 Component클래스에 정의되어 있어서 모든 컴포넌트에서 사용할 수 있습니다.
그림을 그리고자 하는 컴포넌트, 주로 Frame, Canvas, Panel 등의 paint()를 알맞게 오버라이딩하면 됩니다.
paint()의 선언부는 다음과 같이 Graphics를 매개변수로 정의하고 있으며, paint()를 작성할때는 Graphics가 가지고 있는 다양한 그래픽 메서드를 이용해서 그림을 그리게 됩니다.
다음에제는 Frame에 Graphics가 제공하는 메소드를 이용해서 그림을 그리는 것입니다.
아래 예제를 보시죠.
이 예제에서는 paint()를 오버라이딩했다는 것은 알겠는데 호출하는 부분이 없는데 어떻게 그림이 그려졌을까하는 의문이 들것입니다. 그것은 바로 paint()는 우리가 직접 호출하지 않아도 AWT쓰레드에 의해서 자동적으로 호출되기 때문입니다.
AWT쓰레드는 GUI어플리게이션을 실행하면 자동적으로 생성되는 데몬 쓰레드로 평소에는 대기상태에 있다가 화면이 갱신되어야할 상황이 발생되면, paint()또는 update()를 호출해서 화면에 다시 그려지도록 합니다.
AWT쓰레드에 의해 자동적으로 화면이 갱신되는 상황은 다음과 같습니다.
- 처음 화면에 나타날 때
- 다른 화면에 가려져 있던 부분이 다시 화면에 나타날 때
- 아이콘화 되어 있다가 원래 크기로 화면에 나타날 때
위의 상황 이외에도 화면이 다시 그려지도록 하려면 repaint()를 호출하면 됩니다. repaint()는 AWT쓰레드에게 화면을 다시 그릴 것을 요청합니다. AWT쓰레드는 update()를 호출하고 update()는 다시 paint()를 호출합니다.
Image클래스는 gif,jpg와 같은 형식의 이미지 파일을 보여주거나 가상화면(off-screen)을 생성하는데 사용됩니다.
이 포스트가 도움이 되었다면 공감버튼을 눌러주세요.^^
자바 입출력 (0) | 2019.05.10 |
---|---|
애플릿(Applet) (0) | 2019.05.09 |
AWT - 이벤트 처리(event handling) (0) | 2019.05.08 |
AWT - 레이아웃 매니저(BorderLayout, FlowLayout, GridLayout, CardLayout) (0) | 2019.05.06 |
AWT - 메뉴만들기 (0) | 2019.05.06 |
댓글 영역