자바의 Graphics - 1
스윙 컴포넌트 그리기
스윙 그리기의 기본
• 모든 컴포넌트는 자신의 모양을 스스로 그린다.
• 컨테이너는 자신을 그린 후, 자식들에게 그리기를 지시한다.
public void paintComponent(Graphics g)
• 스윙 컴포넌트가 자신의 모양을 그리는 메소드
• 컴포넌트가 그려져야 하는 시점마다 호출
-> (크기 변경, 위치 변경 등)
• JComponent 메소드 : 모든 스윙 컴포넌트가 이 메소드를 가진다.
Graphics 객체
• java.awt.Graphics
• 컴포넌트 그리기에 필요한 도구를 제공하는 객체
예제
import java.awt.*;
import javax.swing.*;
// paintComponent()와 JPanel을 이용한 예제
public class JPanelPaintExample extends JFrame {
private ExPanel p = new ExPanel();
public JPanelPaintExample() {
setTitle("JPanel과 paintComponent 예제");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(p);
setSize(300, 300);
setVisible(true);
}
class ExPanel extends JPanel {
// 사용자가 원하는 모양을 그리고자 할 경우 오버라이딩
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.drawRect(10, 10, 50, 50);
g.drawRect(50, 50, 50, 50);
g.setColor(Color.BLUE);
g.drawRect(90, 90, 50, 50);
}
}
public static void main(String[] args) {
new JPanelPaintExample();
}
}
• 실행 결과
그래픽 기반 GUI 프로그래밍
• 스윙 컴포넌트를 사용하지 않음
• 선, 원, 이미지 등을 직접 그려서 GUI 화면을 구성
• 자유롭고 빠르게 GUI 표현이 가능하다.
Graphics의 기능
• 색상 선택
• 문자열 출력
• 도형 그리기
• 도형 칠하기
• 이미지 출력
• 클리핑
문자열 그리기
• void drawString(String str, int x, int y)
-> (x, y) 좌표에 str 문자열을 그린다.
-> 현재 컬러와 폰트로 출력한다.
drawString() 예제
import java.awt.*;
import javax.swing.*;
public class DrawStringExample extends JFrame {
private ExPanel p = new ExPanel();
public DrawStringExample() {
super("drawString() 메소드 예제");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(p);
setSize(300, 300);
setVisible(true);
}
class ExPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
// (50, 50)에 문자열을 출력
g.drawString("drawString() 1번", 50, 50);
// (80, 80)에 문자열을 출력
g.drawString("drawString() 2번", 80, 80);
}
}
public static void main(String[] args) {
new DrawStringExample();
}
}
• 실행 결과
Color & Font 클래스
Color
• 하나의 색을 표현하는 클래스
• 3가지 성분 : Red, Green, Blue
• 각 성분은 0 ~ 255 사이의 크기를 가진다.
생성자
Color(int r, int g, int b)
new Color(128, 255, 0);
// r(red), g(green), b(blue)
// RGB 색상을 생성
Color(int rgb)
new Color(0x0000ff00); // 초록색
// rgb 정수 값은 32비트 중 하위 24비트만 유효
// 0x00rrggbb 형태로 표현
사용 방법
Graphics g;
// 아래 세 방법 중 하나를 상황에 따라 사용
g.setColor(Color.RED); // 작성자는 해당 방법을 선호
g.setColor(new Color(128, 255, 0));
g.setColor(new Color(0x0000ff00);
Font
• 폰트를 표현하는 클래스
생성자
Font(String fontFace, int style, int size)
// fontFace : 고딕체, Arial 등을 의미
// style : Font.BOLD, Font. ITALIC, Font,. PLAIN 중 하나
// size : 픽셀 단위 크기
색상과 폰트 설정
void setColor(Color color)
// 설정할 색상을 color로 지정
void setFont(Font font)
// 설정할 폰트를 font로 지정
사용 방법
Graphics g;
Font font = new Font("Arial", Font.ITALIC, 20);
g.setFont(font);
g.setColot(Color.RED);
g.drawString("Font&Color", 50, 50);
예제
import java.awt.*;
import javax.swing.*;
public class ColorFontExample extends JFrame {
private ExPanel p = new ExPanel();
public ColorFontExample() {
super("Color와 Font 예제");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(p);
setSize(450, 500);
setVisible(true);
}
class ExPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLUE);
g.drawString("BLUE COLOR", 30, 30);
g.setColor(new Color(255, 0, 0));
g.setFont(new Font("Times", Font.BOLD, 30));
g.drawString("RED COLOR & BOLD & Arial", 30, 60);
g.setColor(new Color(0x0000ff00));
for(int i=1; i<=5; i++) {
g.setFont(new Font("Times", Font.ITALIC, i*10));
g.drawString("GREEN COLOR", 30, 90+i*60);
}
}
}
public static void main(String[] args) {
new ColorFontExample();
}
}
• 실행 결과
Author And Source
이 문제에 관하여(자바의 Graphics - 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mdev97/자바의-Graphics-1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)