객체지향 12장은 그래픽 기반 GUI 프로그래밍에 대해 설명하고 있으며, 자바의 paintComponent()
메소드를 활용하여 컴포넌트에 직접 그림을 그리는 방법을 다룹니다.
자바 그래픽 기반 GUI 프로그래밍 – paintComponent() 활용
1. 스윙 컴포넌트 그리기 – paintComponent()
자바 스윙에서 모든 컴포넌트는 자신의 모양을 직접 그립니다. 컴포넌트가 화면에 그려질 때마다 자동으로 호출되는 메소드가 paintComponent(Graphics g)
입니다. 이 메소드를 오버라이딩하면 개발자가 원하는 대로 도형, 텍스트, 이미지 등을 그릴 수 있습니다.
class MyComponent extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g); // 기존 컴포넌트 그리기
g.setColor(Color.BLUE); // 파란색 설정
g.drawRect(10, 10, 50, 50); // 사각형 그리기
}
}
class MyComponent extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g); // 기존 컴포넌트 그리기
g.setColor(Color.BLUE); // 파란색 설정
g.drawRect(10, 10, 50, 50); // 사각형 그리기
}
}
2. Graphics 클래스 활용
자바의 Graphics
객체는 도형을 그리고 색상, 폰트 등을 설정하는 기능을 제공합니다. 이 객체를 통해 선, 원, 사각형, 문자열 등을 그릴 수 있습니다.
문자열 출력하기
drawString()
메소드를 사용해 원하는 위치에 문자열을 출력할 수 있습니다.
g.drawString("Hello, World!", 30, 50);
3. Color와 Font 클래스
자바에서 색상은 Color
클래스로, 폰트는 Font
클래스로 관리됩니다. setColor()
와 setFont()
메소드를 통해 색상과 폰트를 설정하고 사용할 수 있습니다.
g.setColor(Color.RED); // 빨간색 설정
g.setFont(new Font("Arial", Font.BOLD, 20)); // Arial, 20픽셀, 굵게
g.drawString("자바는 재밌다!", 50, 50); // 텍스트 출력
4. 도형 그리기
자바는 다양한 도형을 그릴 수 있습니다. 사각형, 타원, 원, 다각형 등을 그리는 메소드들이 있으며, 이를 활용해 다양한 그래픽 요소를 표현할 수 있습니다.
예제: 선 그리기
g.drawLine(20, 20, 100, 100); // (20, 20)에서 (100, 100)까지 선 그리기
예제: 사각형 그리기
g.drawRect(20, 20, 80, 80); // 사각형 그리기
g.fillRect(20, 20, 80, 80); // 사각형 채우기
5. 이미지 그리기
ImageIcon
을 이용해 이미지를 불러온 후 drawImage()
메소드를 통해 원하는 위치에 이미지를 출력할 수 있습니다.
ImageIcon icon = new ImageIcon("images/image.jpg");
g.drawImage(icon.getImage(), 20, 20, this);
6. 클리핑(Clipping)
클리핑은 그래픽을 그릴 때 특정 영역만을 그리는 기능입니다. setClip()
메소드를 사용하여 클리핑 영역을 설정하고, 그 영역 내에서만 그래픽이 그려지도록 할 수 있습니다.
g.setClip(50, 50, 100, 100); // (50, 50)에서 100x100 크기의 클리핑 영역 설정
g.drawRect(0, 0, 200, 200); // 클리핑 영역에 의해 일부만 그려짐
7. repaint() 메소드
repaint()
는 컴포넌트를 강제로 다시 그리도록 지시하는 메소드입니다. 주로 컴포넌트의 모양이나 위치가 변경되었을 때 사용되며, 컴포넌트의 상태가 바뀔 때 마다 자동으로 호출됩니다.
예제 코드
JPanel에 도형 그리기
import javax.swing.*;
import java.awt.*;
public class PaintComponentEx extends JFrame {
public PaintComponentEx() {
setTitle("JPanel의 paintComponent 예제");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
add(new MyPanel());
setVisible(true);
}
class MyPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.drawRect(50, 50, 100, 100); // 사각형 그리기
}
}
public static void main(String[] args) {
new PaintComponentEx();
}
}
이 코드를 통해 직접 도형을 그리는 방법을 배울 수 있으며, 추가로 색상과 폰트 변경, 텍스트 출력, 이미지를 그리는 기능을 더할 수 있습니다. 자바의 그래픽 프로그래밍은 자유롭게 UI를 만들고 사용자와 상호작용하는 기능을 구현하는 데 매우 유용한 기술입니다.
'Java' 카테고리의 다른 글
명품자바 프로그래밍의 기초: 14장 (0) | 2024.09.18 |
---|---|
명품자바 프로그래밍의 기초: 13장 (0) | 2024.09.17 |
명품자바 프로그래밍의 기초: 11장 (0) | 2024.09.13 |
명품자바 프로그래밍의 기초: 10장 (0) | 2024.09.02 |
명품자바 프로그래밍의 기초: 9장 (0) | 2024.09.02 |