5 분 소요

👨‍💻🏫KNU 2021-2 SW & media 자바실무 필기노트 12

1.스윙 컴포넌트 그리기 기본

모든 컴포넌트는 자신의 모양을 작성하고 그 자식개체에게 그리기를 지시한다.

public void paintComponent(Graphics g)

  • 스윙 컴포넌트가 자신을 그리는 메소드로 모든 스윙 컴포넌트는 이 메소드를 가지고있다.
  • 컴포넌트가 그려져야하는 시점에 호출되며 창의 크기조절 초기화등에 사용된다.

Java.awt.Graphics 컴포넌트 그리기에 필요한 도구를 제공한다.

2. 그래픽 기반 GUI프로그래밍

스윙 컴포넌트틀 사용하지않고 자유로운 모양을 그리기에 효과적이다.

그래픽 메소드


setColor(int color); //색상선택 
setFont(String font, int style, int size); //폰트설정
drawString(String str, int x, int y); //문자열 출력 
darwRect(int x, int y, int lenX, int lenY); //사각형 그리기
darwOval(int x, int y, int lenX, int lenY); //원 그리기
drawRoundRect(int x, int y, int lenX, int lenY, int roundX, int roundY); //둥근모서리 사각형그리기 
drawLine(int Ax, int Ay, int Bx, int By); //선 그리기 
drawArc(int x, int y, int lenX, int lenY, int angleA, int angleB); //원호 그리기 
drawPolygon(int array x, int array y, int point); //다각형 그리기 
//({20,20,40,40},{80,40,80,40},4)의 형태
fillRect(int x, int y, int lenX, int lenY); //사각형 칠하기
//나머지도 fill(이름)형으로 인자는 draw와 동일하다
//여기부터는 다음시간에..
이미지 출력drawImage
클리핑 clipRect

기본형


class MyComponent extends 기존 스윙컴포넌트
	public void paintComponent(Graphics g){
		...
	}

예제

예제1 JPanel을 상속받는 도형 작성


...
public class paintJPanelEx extends JFrame {
	private MyPanel panel = new MyPanel();
	
	public paintJPanelEx() {
...
		setContentPane(panel); //컨텐츠팬 작성 
...
	}
	class MyPanel extends JPanel {
		public void paintComponent(Graphics g) { //오버라이딩 
			super.paintComponent(g); // 재호출로 기존 도형 제거
			g.setColor(Color.BLUE); //색상선택
			g.drawRect(10,10,50,50); //사각형그리기(10,10)으로부터 50*50사각형 작성
			g.drawRect(50,50,50,50); //원점으로부터 X+,Y-로 그려진다.  
		}	
	}
	public static void main(String [] args) {
		new paintJPanelEx();
	}
} 

예제2. JPanel을 상속받는 문자열 작성


...
public class paintJPanelEx extends JFrame {
	private MyPanel panel = new MyPanel();
	
	public paintJPanelEx() {
...
		setContentPane(panel); //컨텐츠팬 작성 
...
	}
	class MyPanel extends JPanel {
		public void paintComponent(Graphics g) { //오버라이딩 
			super.paintComponent(g); // 재호출로 기존 도형 제거
			g.setColor(Color.RED); //색상선택
			g.drawString("foo",10,60); //(10,60)으로부터 "foo" 작성
			Font f = new Font("Futura", Font.BOLD, 12);
            g.setFont(f);//폰트변경
			g.setColor(Color.BLUE);
			g.drawString("bar",30,60);   
		}	
	}
	public static void main(String [] args) {
		new paintJPanelEx();
	}
} 

Color Font 클래스

지금까지 Color.Blue와 같은 방식으로 작성했으나 컬러를 지정하는 법은 여러가지가 있다.


Color(int r, int g, int b)
Color(int 0x00hexcode)
Color(int static) //Color.BLUE

Font(String fontFace, int staticStyle, int size)//staticStyle이라함은 Font.BOLD같은거

태그:

카테고리:

업데이트:

댓글남기기