Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Event Handling (Xử lý sự kiện) và các thành phần trong Java

GUI trong Java xử lý tương tác với người dùng qua chuột, bàn phím và các điều khiển như nút bấm, hộp kiểm, trường văn bản, v.v. dưới dạng các sự kiện (events). Các sự kiện này phải được xử lý đúng cách để triển khai Java như một ngôn ngữ Event-Driven Programming (Lập trình hướng sự kiện).

Ba thành phần chính trong Event Handling

  • Events (Sự kiện)
  • Event Sources (Nguồn sự kiện)
  • Event Listeners/Handlers (Bộ lắng nghe/Xử lý sự kiện)

1. Events (Sự kiện)

  • Đối tượng mô tả thay đổi trạng thái của đối tượng nguồn.
  • Java định nghĩa nhiều lớp Event trong package java.awt.event.
  • Ví dụ: ActionEvent, MouseEvent, KeyEvent, FocusEvent, ItemEvent, v.v.

2. Event Sources (Nguồn sự kiện)

  • Đối tượng tạo ra sự kiện.
  • Sự kiện xảy ra khi trạng thái nội bộ của đối tượng thay đổi.
  • Nguồn phải đăng ký listeners để các listener nhận thông báo về loại sự kiện cụ thể.
  • Ví dụ: Button, CheckBox, List, Choice, Window, v.v.

3. Event Listeners (Bộ lắng nghe)

  • Đối tượng được thông báo khi sự kiện xảy ra.
  • Hai yêu cầu chính: (1) phải đăng ký với một hoặc nhiều nguồn sự kiện để nhận thông báo, (2) phải triển khai các phương thức để nhận và xử lý thông báo.
  • Java định nghĩa tập hợp interface trong package java.awt.event.
  • Ví dụ: ActionListener, MouseListener, ItemListener, KeyListener, WindowListener, v.v.

Ví dụ minh họa

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

public class EventListenerTest extends JFrame implements ActionListener { 
    JButton button; 
    
    public static void main(String args[]) { 
        EventListenerTest object = new EventListenerTest(); 
        object.createGUI(); 
    } 
    
    void createGUI() { 
        button = new JButton(" Click Me !"); 
        setSize(300,200); 
        setLocationRelativeTo(null); 
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        setVisible(true); 
        add(button); 
        button.addActionListener(this); 
    } 
    
    public void actionPerformed(ActionEvent ae) { 
        if(ae.getSource() == button) { 
            JOptionPane.showMessageDialog(null, "Generates an Action Event"); 
        } 
    } 
}

Kết quả đầu ra

Cửa sổ hiển thị nút "Click Me !". Khi nhấn, hộp thoại thông báo "Generates an Action Event" xuất hiện, minh họa luồng: Source (Button) → Event (ActionEvent) → Listener (ActionListener) → Xử lý.