자바실무 제 12강[KNU 2021-2]
👨💻🏫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같은거
댓글남기기