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"