본문 바로가기
Java 강의

자바 GUI 이벤트 / java gui event

by 자유코딩 2017. 10. 31.

이벤트 - 구동 프로그래밍

 

마우스 버튼 클릭, 마우스 이동 , 키보드 입력 등등과 같은 이벤트에 응답하는 형태로 작성하는 프로그래밍

 

이벤트 발생 (클릭)!

 

클릭이 발생하기를 기다린다 - 클릭되면 일어날 일 작성

 

컴포넌트 - 버튼

 

이벤트 발생

 

이벤트 리스너 - 이벤트가 발생하기를 기다린다

 

이벤트 처리 과정

1.이벤트를 발생하는 컴포넌트를 생성

2.이벤트 리스너 클래스를 작성한다

3.이벤트 리스너를 컴포넌트에 등록한다

 

이벤트 리스너

발생된 이벤트에 반응해서 이벤트를 처리하는 객체

 

 

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
 
public class ThreadGui extends JFrame{
    JLabel label;
    public ThreadGui() {
        setSize(500,500);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JButton button1 = new JButton("button1");
        button1.addActionListener(new buttonThread());
        
        label = new JLabel("");
        JTextField textfield = new JTextField(10);
        JPanel panel = new JPanel(new FlowLayout());
        panel.add(label);//Jlabel을 추가한다
        panel.add(textfield);//JtextField를 추가한다
        panel.add(button1);//button을 추가한다
        this.add(panel);//panel을 화면에 
    }
    class buttonThread extends Thread implements ActionListener{
        @Override
        public void run() {//쓰레드의 동작을 정의한다
            int a=10;
            try {
                while (a>0) {
                    label.setText(""+a);//10부터 1씩 줄어들며 출력한다
                    a--;                    
                    Thread.sleep(1000);
                }                
            } catch (Exception e) {
            }
        }
        @Override
        public void actionPerformed(ActionEvent e) {//버튼이 클릭되면 쓰레드 실행
            Thread t1 = new Thread(new buttonThread());
            t1.start();    
        }
    }
    public static void main(String[] args) {
        new ThreadGui();
    }
}
cs

댓글