비투즈의 노트르담

이벤트

리스너(Listener, 청취자 라는 뜻을 가진 단어)

인터페이스는 리스너(사용자)와 이벤트 소스(버튼)을 연결해주는 다리 역할을 합니다.

리스너로써의 역할은 인터페이스를 구현하고 버튼을 등록하고 이벤트 처리 코드를 제공합니다.

이벤트 소스는 리스너로부터 등록을 받고, 사용자로부터 이벤트를 받고 리스너 이벤트 처리 메소드를 호출합니다.

이벤트 객체로써 이벤트 콜백 메소드에 대한 인자고, 이벤트에 대한 데이터를 리스너한테 돌려주는 역할을 합니다.

JFrame frame = new JFrame(); //Gui창을 만들 때, 사용

frame.getContentPane().add(button); // 위젯(번튼, 텍스트 필드 등)을 추가할 때 사용

frame.setSize(300, 300); // 크기 지정

frame.setVisible(true); //보이게

버튼을 클릭하면, GUI 이벤트가 일어납니다.

이벤트가 일어나는지 볼려면, 이벤트 소스를 등록해야 합니다.

등록메소드명은 add(이벤트 유형)Listener -> ex) button.addActionListener(this);

리스너 ---- button.addActionListener(this) --> 소스

<--- actionPerformed(Event) ---------

이벤트 처리 콜백 메소드는

public void actionPerformed(ActionEvent event) {

button.setText("클릭");

}

종합하자면,

public class EventExample implements ActionListener {

JButton button;

public static void main(String[] args) {

JFrame frame = new JFrame();

button = new JButton("클릭");

button.addActionListener(this);

frame.getContentPane().add(button);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(300, 300);

frame.setVisible(true);

}

public void actionPerformed(ActionEvent event) {

button.setText("클릭 되었다");

}

그래픽

JPanel의 하위클래스를 만들고, paintComponent() 라는 매소드를 오버라이드하면 됩니다.

사용방식으로는,

public void paintComponent(Graphics g){

Image image = new ImageIcon("CJU.jpg).getImage();

g.drawImage(image, 5, 5, this);

}

publiv void paintComponent(Graphics g){

g.fillRect(0, 0, this.getWidth(), this.getHeight());

int red = (int) ( Math.random() * 255);

int green = (int) (Math.random() * 255);

int blue = (int) (Math.random() * 255);

Color randomColor = new Color( red, green, blue );

g.setColor(randomColor);

g.fillOval(70, 70, 100, 100); // g.fillOval(왼쪽, 위, 너비 pixel, 높이 pixel)

}

Graphics 레퍼런스를 가지고 호출할 수 있는 메소드

drawImage(), drawLine(), drawPolygon(), drawRect(), drawOvel(), fillRect(), fillRoundRect(), setColor()

를 호출 할 수가 있습니다.

Graphics 레퍼런스는 Graphics2D를 참조합니다.

Graphics2D 호출할 수있는 다양한 메소드

fill3DRect(), draw3DRect(), rotate(), scale(), shear(), transform(), setRenderingHints()

public void paintComponent(Graphics g){

Graphics2D g2d = (Graphics2D) g;

GradientPaint gradient = new GradientPaint(100, 100, Color.blue, 150, 150, Color.white);

g2d.setPaint(gradient);

g2d.fillOval(100, 100,130, 130);

}

public void paintComponent(Graphics g){

Graphics2D g2d = (Graphics2D) g;

int red = (int) ( Math.random() * 255 );

int green = (int) ( Math.random() * 255 );

int blue = (int) ( Math.random() * 255 );

Color startColor = new Color(red, green, blue);

int red = (int) ( Math.random() * 255 );

int green = (int) ( Math.random() * 255 );

int blue = (int) ( Math.random() * 255 );

Color endColor = new Color(red, green, blue);

GradientPaint gradient = new GradientPaint(100, 100, startColor, 150, 150, endColor );//GradientPaint(시작점, 시작하는색, 끝점, 끝나는색);

g2d.setPaint(gradient);

g2d.fillOval(100, 100, 130, 130);

}

책을 보고 정리한 내용입니다.

이상 "Yang"이였습니다.

- Yang -

'프로그래밍 > 자바' 카테고리의 다른 글

토큰(Token)  (0) 2013.04.10
레이아웃(Layout) & 패널(Panel)  (0) 2013.04.05
자바 파일 입출력 3 - 문자스트림  (0) 2013.04.05
자바 파일 입출력 2 - Filter Stream  (0) 2013.04.01
자바 파일 입출력  (0) 2013.04.01