article thumbnail image
Published 2020. 6. 17. 16:02

그림을 그리기 위해서는 그림을 그리기 위한 도구가 필요하다.

첫번째로 글미 그릴 도화지이고, 두번째는 그림을 그려낼 도구들이다.

 

자바에서는 이러한 2개를 제공해주는데 우선 그림을 그릴 도화지는 JPanel 클래스를 사용하면 된다.

그리고 JPanel 에는 paint라는 메소드를 제공해 주는데 이 메소드를 오버라이딩하면 Graphics라는 클래스 객체를 제공해준다.

Graphics 라는 클래스 객체가 바로 그림을 그려낼 도구들을 의미한다.

 

위 소스코드가 그림을 그리기 위한 가장 기본 코드이다.

 

우선 빨간색 네모 부분을 보면 새로운 "DrawPanel" 이라는 클래스를 정의하고 있다.

JPanel 클래스를 상속받아서 정의 되어진 DrawPanel 클래스는 Paint라는 메소드를 오버라이딩하고 있다.

 

이 paint 메소드에서는매개변수로 Graphics 클래스의 객체인 "g" 를 제공해주고 있다.

이 "g"를 가지고 각종 그림을 그릴 수 있게 된다.

 

이렇게 정의된 "DrawPanel"을 main메소드에서 사용하는 모습을 보라색 네모 부분에서 보여준다.


paint 메소드에 대하여

paint 메소드는 "Panel" 에서 제공되어지는 메소드이다.

그리고 이 메소드에서는 "Graphics" 객체를 제공해줌으로써 그림도 그릴 수 있도록 해준다.

 

그럼 어느 시점에 이 "paint" 메소드가 실행되느냐? 가 궁금할 것이다.

 

이 "paint" 메소드는 특수한 상황에만 호출되어지는 콜-백 메소드이다.

그 특수한 상황이란 바로 해당 "UI" 클래스가 프레임 위에 디스플레이될(보여질) 때이다.

프레임 위에서 자동 호출이 될 때, 자동으로 호출되는 메소드가 "paint" 메소드이다.


Graphics 클래스에 대하여

그래픽 클래스는 그림을 그리기 위한 도구이다.

어떻게 그린다는 것일까?

 

네모, 라인, 원을 그리거나 하는 메소드들이 제공되어진다.

네모를 그릴려면 "drawRect" 라는 메소드를 사용하고

직선을 그릴려면 "drawLine" 라는 메소드를 사용하고

원을 그릴려면 "drawArc" 라는 메소드를 사용하면 된다.


네모를 그려보자

네모를 그릴려면 "drawRect" 라는 메소드를 활용하면 쉽다.

 

 

여기서 빨간 네모를 보면 "Graphics" 타입의  "g" 객체를 가지고 "drawRect" 라는 메소드를 호출한다.

 

자바에서 drawRect 의 내용을 보면 4개의 매개변수를 전달 받는다.

바로 (x,y) 좌표 값과 네모를 그리기위한 가로(width), 세로(height) 길이를 전달한다.

 

위 그림을 보면 이해하기 쉬울 것이다.

 

위 그림을 보면 결론적으로 그려질 네모는 (50. 50) 위치에 있는 가로 100 세로 200 길이를 가진 네모임을 예측할 수 있다.

 

결과 화면이다.

 


원을 그려보자

이번엔 원을 그려보자

원은 drawOval 이라는 메소드를 사용해서 그려보자.

 

네모를 그리는 것과 비슷하다.

 

자바에서 제공해주는 drawOval 메소드 설명이다.

(x,y) 좌표 위치에 가로와 세로의 사각형이 있다고 하자.

그 사각형의 각변의 중점을 내접하는 내접원을 그리면 된다.

 

가로 세로 길이가 같으면 원이되고, 다르면 타원이 된다.

 

결과이다.

'📌 java > java' 카테고리의 다른 글

java - JFrame 크기, 위치, 좌표계  (0) 2020.06.17
java - GUI  (0) 2020.06.17
java - JPanel  (0) 2020.06.17
java - TreeSet  (0) 2020.06.13
java - HashMap  (0) 2020.06.12
복사했습니다!