Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

Event Handling ใน Java คืออะไร และมีส่วนประกอบอะไรบ้าง?

GUI ใน Java จัดการปฏิสัมพันธ์กับผู้ใช้ผ่าน เมาส์, คีย์บอร์ด และคอนโทรลต่างๆ เช่น ปุ่ม, เช็กบ็อกซ์, ช่องข้อความ เป็นเหตุการณ์ (Events) เหตุการณ์เหล่านี้ต้องได้รับการจัดการอย่างเหมาะสมเพื่อนำ Java มาใช้เป็น Event-Driven Programming

3 ส่วนประกอบหลักของ Event Handling

  • Events (เหตุการณ์)
  • Event Sources (แหล่งเหตุการณ์)
  • Event Listeners/Handlers (ผู้ฟัง/จัดการเหตุการณ์)

Events (เหตุการณ์)

  • วัตถุที่อธิบาย การเปลี่ยนแปลงสถานะของแหล่งที่มา (source object)
  • Java กำหนด Event Classes 多 在 java.awt.event package
  • ตัวอย่าง: ActionEvent, MouseEvent, KeyEvent, FocusEvent, ItemEvent

Event Sources (แหล่งเหตุการณ์)

  • วัตถุที่ สร้างเหตุการณ์ เมื่อสถานะภายในเปลี่ยนแปลง
  • ต้อง ลงทะเบียน Listener เพื่อให้ Listener ได้รับการแจ้งเตือน
  • ตัวอย่าง: Button, CheckBox, List, Choice, Window

Event Listeners (ผู้ฟังเหตุการณ์)

  • วัตถุที่ ได้รับแจ้งเตือนเมื่อเหตุการณ์เกิดขึ้น
  • ต้อง: (1) ลงทะเบียนกับ Source, (2) Implement เมธอดรับและประมวลผล
  • Java กำหนด Interfaces ใน java.awt.event
  • ตัวอย่าง: ActionListener, MouseListener, ItemListener, KeyListener, WindowListener

ตัวอย่างโค้ด

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

ผลลัพธ์

กดปุ่ม "Click Me!" แล้วจะแสดงกล่องข้อความ "Generates an Action Event"