화가(jvm, 프로그래머)
도화지(Container)
붓(Graphics)
[출처] 그래픽 (서울IT교육센터직업전문학교) |작성자 체리
import java.awt.*;
import java.awt.event.*;
class A {
public static void main(String args[]) {
MyFrame frame = new MyFrame("창문");
frame.setVisible(true);
frame.setBounds(200, 200, 500, 500);
frame.setLayout(new FlowLayout());
frame.addComponent();
}
}
class MyFrame extends Frame implements ActionListener {
Button b1, b2, b3;
int shape;
static class Shape {
static final int LINE = 1;
static final int OVAL = 2;
}
MyFrame(String title) {
super(title);
b1 = new Button("선");
b2 = new Button("원");
b3 = new Button("지우기");
b1.addActionListener(this);
b2.addActionListener(this);
}
void addComponent() {
add(b1);
add(b2);
add(b3);
}
@Override
public void paint(Graphics g) {
switch (shape) {
case Shape.LINE:
g.drawLine(100, 100, 300, 300);
break;
case Shape.OVAL:
g.drawOval(100, 100, 300, 300);
break;
}
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == b1)
shape = Shape.LINE;
else if (e.getSource() == b2)
shape = Shape.OVAL;
repaint();
}
}
repaint() -JVM이 현재 프레임에 있는 draw를 지우고 다시 그린다.
만약에 프레임이나 콘솔을 움직이거나 크기를 리사이즈 하거나 최소화해서 다시 최대화를 하면
public void paint(Graphics g) 에 출력문 JVM 다시 그림 을 넣음
이렇게 된다.
왜그러냐면 repaint() 는 update와 paint를 같이 호출한다
update() -> 삭제하는애 컨테이너에 있는 모든 그래픽을 지운다
paint() 컨테이너에 그래픽을 그리는애
그래서 지우고 다시 그리고를 계속 반복한다.
데이터베이스 쿼리문 실행순서 (0) | 2015.01.30 |
---|---|
자바 AWT 를 이용한 작은숫자 찾기 게임 (0) | 2015.01.27 |
자바 mvc 공부 싱글톤 패턴 (0) | 2015.01.27 |
JSP 스크립트 릿에 System 을 써보았습니다. (0) | 2015.01.27 |
자바로 메모장 만들기 단어 찾기 부분만단어 (2) | 2015.01.25 |