java/이벤트 처리

여러 가지 이벤트 처리 방법

appmaster 2019. 5. 11. 17:26

1. 프레임 클래스가 이벤트를 처리

import javax.swing.*;
import java.awt.event.*;

public class event extends JFrame implemets ActionListener {
   private JButton button;
   private JLabel label;
   int counter = 0;
   //event 클래스는 JFrame클래스를 상속받고 동시에 ActionListener를 구현한다.
     따라서 프레임이 버튼에서 발생하는 이벤트도 처리할 수 있다.
   
   
   public void actionPerformed(ActionEvent e) {
      counter ++;
      label.setText("현재의 카운터값 : "+ counter);
   }
   // event클래스 안에 actionPerformed()가 정의 되어 있다.
   
   
   public event(){
       this.setSize(400, 150);
       this.setTitle("이벤트 예제");
       
       JPanel panel = new JPanel();
       button = new JButton("증가");
       label = new JLabel("현재의 카운터 값 : "+ counter);
       button.addActionListener(this); // 현재 객체를 이벤트 리스너로 버튼에 등록한다. 
       panel.add(label);                  즉 자기 자신이 이벤트를 처리한다고 등록한다.
       panel.add(button);
       add(panel);
       setVisible(true);
       }
     public static void main(String[] args){
        event t = new event();
        
        }
  }

 

 

2. 무명클래스를 사용하는 방법

이벤트 리스너 클래스를 정의할 때, 많이 사용되는 방법 중의 하나가 무명 클래스를 사용하는 것이다. 무명 클래스는 말 그대로 이름이 없는 클래스를 작성하여, 한번만 사용하는 것이다. 이것은 처음에 상당히 이상해 보이지만, 실제로 익숙해지만 코드를 읽기 쉽게 만든다. 왜냐하면 클래스가 정의되면서 바로 사용되기 떄문이다. 안드로이드 프로그래밍에서도 자주 사용된다. 

무명 클래스는 부모 클래스를 상속받거나 특정 인터페이스를 구현하여 작성할 수 있고 그 목적은 부모 클래스의 메소드를 재정의하거나 인터페이스의 메소드를 정의하는 것이다. 예제에서는 다음과 같은 부분이 무명 클래스이고 ActionListener 인터페이스의 actionPerformed() 함수를 정의하고 있다.

import javax.swing.*;
import java.awt.event.*;

public class event extends JFrame implemets ActionListener {
   private JButton button;
   private JLabel label;
   int counter = 0;
   
   
   
   public void actionPerformed(ActionEvent e) {
      counter ++;
      label.setText("현재의 카운터값 : "+ counter);
   }
   
   
   public eventFrame1(){
       this.setSize(400, 150);
       this.setTitle("이벤트 예제");
       
       JPanel panel = new JPanel();
       button = new JButton("증가");
       label = new JLabel("현재의 카운터 값 : "+ counter);
       
       button.addActionListner(new ActionListener() {    //무명클래스는 ActionListener 인터페이스를 구현한다.
          public void actionPerformed(ActionEvent e) {     무명 클래스의 객체도 동시에 생성된다.
            counter ++;
            label.setText("현재의 카운터 값 : "+ counter);
          }
       });  // 무명클래스 안에 actionPerformed()메소드를 정의한다.
       
       panel.add(label);              
       panel.add(button);
       add(panel);
       setVisible(true);
       }
     public static void main(String[] args){
        event t = new event();
        
        }
  }

 

 

이름이 있는 클래스의 경우

class MyListener implements ActionListenr {
   ...
}
MyListener n = new MyListener();

 

 

무명 클래스의 경우

MyListener n = new ActionListener() { .......};

'java > 이벤트 처리' 카테고리의 다른 글

Mouse와 MouseMotion 이벤트  (0) 2019.05.22
람다식  (0) 2019.05.11
이벤트란?  (0) 2019.05.11