Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java의 이벤트 리스너 인터페이스와 이벤트 어댑터 클래스의 차이점은 무엇입니까?


EventListener 인터페이스는 특정 종류의 이벤트에 대해 이벤트 핸들러가 구현해야 하는 메소드를 정의하는 반면 이벤트 어댑터 클래스는 EventListener 의 기본 구현을 제공합니다. 인터페이스.

이벤트 리스너

  • 이벤트 청취자 이벤트를 처리하는 모든 구성 요소의 중추입니다.
  • 특정 EventListener 의 모든 메소드 EventObject 의 하위 클래스인 인스턴스로 단일 매개변수를 가집니다. 수업.
  • EventListener 인터페이스를 확장해야 하며 j에 정의됩니다. ava.util 패키지.
  • 몇 가지 EventListener 인터페이스는 ActionListener입니다. , KeyListener , 마우스 리스너 , 포커스 리스너 , ItemListener

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class KeyListenerTest implements KeyListener, ActionListener {
   JFrame frame;
   JTextField tf;
   JLabel lbl;
   JButton btn;
   public KeyListenerTest() {
      frame = new JFrame();
      lbl = new JLabel();
      tf = new JTextField(15);
      tf.addKeyListener(this);
      btn = new JButton("Clear");
      btn.addActionListener(this);
      JPanel panel = new JPanel();
      panel.add(tf);
      panel.add(btn);
      frame.setLayout(new BorderLayout());
      frame.add(lbl, BorderLayout.NORTH);
      frame.add(panel, BorderLayout.SOUTH);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setLocationRelativeTo(null);
      frame.setSize(300, 200);
      frame.setVisible(true);
   }
   @Override
   public void keyTyped(KeyEvent ke) {
      lbl.setText("You have typed "+ ke.getKeyChar());
   }
   @Override
   public void keyPressed(KeyEvent ke) {
      lbl.setText("You have pressed "+ ke.getKeyChar());
   }
   @Override
   public void keyReleased(KeyEvent ke) {
      lbl.setText("You have released "+ ke.getKeyChar());
   }
   @Override
   public void actionPerformed(ActionEvent ae) {
      tf.setText("");
   }
   public static void main(String args[]) {
      new KeyListenerTest();
   }
}

출력

Java의 이벤트 리스너 인터페이스와 이벤트 어댑터 클래스의 차이점은 무엇입니까?

이벤트 어댑터

  • 추상 클래스는 이벤트 로 호출할 수 있습니다. 어댑터 다양한 이벤트를 받아보실 수 있습니다.
  • 이벤트 어댑터 클래스는 EventListener 에 있는 모든 메서드의 기본 구현을 제공합니다. 인터페이스.
  • FocusAdapter 이벤트 어댑터 클래스는 거의 없습니다. , 키 어댑터 , 마우스 어댑터 , 창 어댑터

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class KeyAdapterTest {
   private JFrame frame;
   private JLabel headLabel;
   private JLabel msgLabel;
   private JPanel controlPanel;
   public KeyAdapterTest() {
      initializeUI();
   }
   private void initializeUI() {
      frame = new JFrame("KeyAdapter class");
      frame.setSize(350, 275);
      frame.setLayout(new GridLayout(3, 1));
      headLabel = new JLabel("", JLabel.CENTER);
      msgLabel = new JLabel("", JLabel.CENTER);
      msgLabel.setSize(300, 100);
      frame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent windowEvent) {
            System.exit(0);
         }
      });
      controlPanel = new JPanel();
      controlPanel.setLayout(new FlowLayout());
      frame.add(headLabel);
      frame.add(controlPanel);
      frame.add(msgLabel);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
   }
   private void showMouseApapter() {
      headLabel.setText("KeyAdapter Test");
      final JTextField textField = new JTextField(10);
      JButton displayButton = new JButton("Display");
      displayButton.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            msgLabel.setText("You entered : " + textField.getText());
         }
      });
      textField.addKeyListener(new KeyAdapter() {
         public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_ENTER) {
               msgLabel.setText("You entered : " + textField.getText());
            }
         }
      });
      controlPanel.add(textField);
      controlPanel.add(displayButton);
      frame.setVisible(true);
   }
   public static void main(String[] args) {
      KeyAdapterTest test = new KeyAdapterTest();
      test.showMouseApapter();
   }
}

출력

Java의 이벤트 리스너 인터페이스와 이벤트 어댑터 클래스의 차이점은 무엇입니까?