상세 컨텐츠

본문 제목

자바 Graphics 선 , 원 그리기 공부

관리X 과거글

by 까먹기전에 2015. 1. 27. 14:22

본문

반응형

화가(jvm, 프로그래머)


도화지(Container)


붓(Graphics) 


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() 컨테이너에 그래픽을 그리는애


그래서 지우고 다시 그리고를 계속 반복한다.





관련글 더보기