JAVA Event handling

event-driven programming:
event-based programming 이라고도 한다. 순차적으로 명령들을 실행하는 프로그램과 달리, 명령들의 흐름을 event들에 의해 조작하는 프로그램을 구현하는 것이다.

일반적인 main()함수로 부터 시작하여 , 함수들을 호출하여 사용하고 , 끝을 만나면 프로그램이 종료되는 프로그램들과 달리, GUI방식의 윈도우프로그램들은 사용자가 종료버튼을 누르는 Event가 발생하지 않는 한 무한루프를 돌면서, Event들에 의해 조작되는 프로그램이다.

Event는 두가지로 나누어 볼 수 있다.

  • high level event: 우리가 일상적으로 의미를 정의하고 판단할 수 있는 이벤트를 말한다.
  • low level event: high level event들을 구성하고 있는 요소로, 작고 세밀한 수준의 이벤트를 말한다.


예를들어, 버튼을 클릭한다. 라는 이벤트는 high level event이고 그것을 구성하는 세밀한 수준의 이벤트, “마우스를 버튼위로 이동한다.”,”마우스를 누른다.”,”마우스를 땐다.” 와 같은 이벤트들은  low level event들이다.


버튼을 누르면, 버튼이 눌렸다고 출력하는 간단한 event driven programming을 구현해 보자.
버튼을 누르는 high level event가 발생하면,그것을 감지하고, 행동하는 절차가 필요하다.

JButton b = new JButton(“OK”);
라고 하나의 버튼을 만들자. 이 버튼에 이벤트를 감지하는 능력을 주자.
b.addActionListener();
이제 버튼은 이벤트를 감지할 수 있게 되었다.
다음은, 감지한 이벤트를 바탕으로 어떤 행동을 할지를 결정 해주자.
public void actionPerformed(ActionEvent e){} 메소드를 구현해서 행동을 결정지어 주면 된다.


Reference:최종명 외 2인,프로그래머를 위한 JAVA2 4E,홍릉출판사

ButtonEvent.java


  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. public class ButtonEvent extends JFrame implements ActionListener {
  5.    protected JButton ok;
  6.   
  7.    public ButtonEvent(){
  8.        super("Button Event Test");
  9.       
  10.        ok=new JButton("ok");
  11.        ok.addActionListener(this);
  12.        getContentPane().add(ok,BorderLayout.SOUTH);
  13.       
  14.        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  15.        setSize(300,200);
  16.        setVisible(true);
  17.    }
  18.    public void actionPerformed(ActionEvent e){
  19.        Object o =e.getSource();
  20.        if(o==ok){
  21.            System.out.println("ok button pressed.");
  22.        }
  23.    }
  24.   
  25.    public static void main(String[] args) {
  26.        ButtonEvent be=new ButtonEvent();
  27.    }
  28. }

댓글

이 블로그의 인기 게시물

[Win32 API] WINAPI - 함수호출규약

JAVA Frame Icon setting

JAVA Spinner