Computer >> Máy Tính >  >> Lập trình >> Java

Sự khác biệt giữa giao diện trình xử lý sự kiện và lớp bộ điều hợp sự kiện trong Java là gì?


An EventListener interface xác định các phương thức phải được triển khai bởi trình xử lý sự kiện cho một loại sự kiện cụ thể trong khi Sự kiện Bộ điều hợp lớp cung cấp triển khai mặc định của EventListener giao diện.

Trình xử lý sự kiện

  • Sự kiện Người nghe là xương sống của mọi thành phần để xử lý các sự kiện.
  • Mọi phương pháp của một EventListener cụ thể sẽ có một tham số duy nhất dưới dạng một cá thể là lớp con của EventObject lớp học.
  • Một EventListener giao diện cần được mở rộng và nó sẽ được định nghĩa trong j ava.util gói hàng.
  • Một vài EventListener giao diện là ActionListener , KeyListener , MouseListener , FocusListener , ItemListener và v.v.

Ví dụ

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();
   }
}

Đầu ra

Sự khác biệt giữa giao diện trình xử lý sự kiện và lớp bộ điều hợp sự kiện trong Java là gì?

Bộ điều hợp sự kiện

  • Các lớp Tóm tắt có thể được gọi là Sự kiện Bộ điều hợp để nhận các sự kiện khác nhau.
  • Một Sự kiện Bộ điều hợp lớp cung cấp triển khai mặc định của tất cả các phương thức trong EventListener giao diện.
  • Một số lớp Bộ điều hợp sự kiện là FocusAdapter , KeyAdapter , MouseAdapter , WindowAdapter và v.v.

Ví dụ

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();
   }
}

Đầu ra

Sự khác biệt giữa giao diện trình xử lý sự kiện và lớp bộ điều hợp sự kiện trong Java là gì?