Core Event Concepts: Sources, Listeners, and Event Objects in AWT/Swing
Core Event Concepts: Sources, Listeners, and Event Objects in AWT/Swing
Event Handling क्या है?
Java में Event Handling एक बहुत ही important concept है, खासकर जब हम GUI applications बनाते हैं। जब भी user किसी button पर click करता है, mouse को move करता है या keyboard key दबाता है — उसे एक event कहा जाता है। इन events को handle करने के लिए Java हमें Event Delegation Model provide करता है, जो तीन main components पर आधारित होता है — Source, Listener, और Event Object।
इन तीनों concepts को समझना जरूरी है क्योंकि यही Java के AWT (Abstract Window Toolkit) और Swing में event-driven programming की foundation हैं।
Event Delegation Model क्या होता है?
Event Delegation Model Java में एक powerful mechanism है जो बताता है कि event generate होने के बाद उसे कौन handle करेगा। यह model बताता है कि event source (जो event generate करता है) और listener (जो event handle करता है) के बीच क्या संबंध होता है।
इस model में event generate होने पर source उस event की detail एक event object में रखता है और फिर उसे उस listener को भेजता है जो उस event को सुन रहा होता है।
Event Delegation Model के तीन core components:
- Event Source — जो event generate करता है।
- Event Listener — जो event को सुनता है और उस पर action perform करता है।
- Event Object — जो event से जुड़ी सारी जानकारी रखता है।
1. Event Source क्या है?
Event Source वह object होता है जो event को generate करता है। उदाहरण के लिए, जब user एक Button पर click करता है, तो वो button एक ActionEvent generate करता है।
Java में कई built-in classes हैं जो event sources के रूप में काम करती हैं — जैसे Button, TextField, Checkbox, MenuItem, Window, आदि।
Event Source का काम:
- Event को detect करना।
- उस event को संबंधित listener तक पहुँचाना।
Example:
Button b = new Button("Click Me");
b.addActionListener(new MyActionListener());
ऊपर के example में Button event source है। जैसे ही user button पर click करता है, event generate होता है और registered listener (यहाँ MyActionListener) को भेज दिया जाता है।
2. Event Listener क्या है?
Event Listener वह interface होता है जो किसी specific event को सुनता है और उस event पर action perform करता है।
Java में हर event के लिए एक अलग listener interface बनाया गया है, जैसे:
| Event Type | Listener Interface |
|---|---|
| ActionEvent | ActionListener |
| ItemEvent | ItemListener |
| MouseEvent | MouseListener |
| KeyEvent | KeyListener |
| WindowEvent | WindowListener |
इनमें से हर listener interface में कुछ predefined methods होते हैं जिन्हें हमें implement करना पड़ता है ताकि हम यह define कर सकें कि event होने पर क्या होना चाहिए।
Example: ActionListener Implementation
import java.awt.*;
import java.awt.event.*;
class MyActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("Button Clicked!");
}
}
ऊपर दिए गए example में actionPerformed() method तब call होगा जब button click event होगा।
Listener Interface की विशेषताएँ:
- Listener हमेशा interface के रूप में define होते हैं।
- Listener को किसी event source के साथ register करना पड़ता है।
- Listener का काम सिर्फ event को handle करना होता है।
3. Event Object क्या है?
Event Object वह object होता है जो event से संबंधित सभी जानकारी store करता है। जैसे — कौन सा button click हुआ, कौन सा key दबाया गया, mouse कहाँ move हुआ आदि।
Event object हमेशा java.awt.AWTEvent class या उसके subclass से derive होता है।
Event Object की Hierarchy:
java.lang.Object
↳ java.util.EventObject
↳ java.awt.AWTEvent
↳ ActionEvent, MouseEvent, KeyEvent, ItemEvent आदि
Event Object के Common Methods:
| Method | Description |
|---|---|
| getSource() | Event generate करने वाले source object को return करता है। |
| getID() | Event का unique identification number return करता है। |
| paramString() | Event के बारे में detail string return करता है। |
Example: Event Object का use
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
System.out.println("You clicked: " + command);
}
यहाँ ActionEvent object हमें बताता है कि कौन सा button press हुआ और उसका label क्या था।
Source, Listener और Event Object का Relationship
Event Handling में ये तीनों components एक साथ काम करते हैं। नीचे दिया गया flow इस process को clear करेगा:
- User किसी GUI component (जैसे Button) पर action करता है।
- वह component एक event generate करता है (Event Source)।
- यह event एक event object में convert होता है।
- Source उस event को listener को भेजता है जो register है।
- Listener का method execute होता है और desired action perform करता है।
Simple Diagram Explanation:
Event Source ➜ Event Object ➜ Event Listener ➜ Action Performed
Complete Example (AWT Button Event)
import java.awt.*;
import java.awt.event.*;
public class EventDemo extends Frame implements ActionListener {
Button b1;
EventDemo() {
b1 = new Button("Click Me");
b1.setBounds(100, 100, 80, 40);
add(b1);
b1.addActionListener(this);
setSize(300, 200);
setLayout(null);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
System.out.println("Button Pressed!");
}
public static void main(String args[]) {
new EventDemo();
}
}
ऊपर का प्रोग्राम एक basic AWT example है जहाँ user button पर click करता है और console में message print होता है।
Multiple Listeners और Sources
Java में एक event source के साथ multiple listeners register किए जा सकते हैं, या एक listener कई sources को listen कर सकता है।
Example:
b1.addActionListener(listener1);
b1.addActionListener(listener2);
यहाँ एक ही button दो listeners को event भेजेगा।
इसी तरह, एक ही listener multiple sources के साथ भी attach किया जा सकता है:
b1.addActionListener(this);
b2.addActionListener(this);
इस स्थिति में, listener check करेगा कि event किस button से आया है।
Event Delegation Model के फायदे
- Code simple और maintainable रहता है।
- Logic और UI अलग-अलग manage होते हैं।
- Multiple events को efficiently handle किया जा सकता है।
- Memory और performance बेहतर रहती है।
Real World Example (Swing)
Swing framework में भी event handling इसी model पर आधारित है।
import javax.swing.*;
import java.awt.event.*;
public class SwingEventExample extends JFrame implements ActionListener {
JButton btn;
SwingEventExample() {
btn = new JButton("Press");
btn.setBounds(100, 100, 80, 40);
add(btn);
btn.addActionListener(this);
setLayout(null);
setSize(300, 200);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(this, "Button Clicked!");
}
public static void main(String args[]) {
new SwingEventExample();
}
}
यह Swing का practical example है जहाँ button click होने पर एक dialog box open होता है। यह example perfectly दिखाता है कि source, listener और event object कैसे साथ मिलकर काम करते हैं।
Exam के लिए Important Points
- Event Source वह component होता है जो event generate करता है।
- Listener interface event को सुनता है और उस पर action perform करता है।
- Event Object में event की सारी जानकारी होती है।
- Event Delegation Model तीन components पर आधारित होता है — Source, Listener और Event Object।
- हर event के लिए Java में अलग-अलग listener interfaces बनाए गए हैं।
Short Notes for Revision
- Event Source: Component जो event generate करता है।
- Event Listener: Interface जो event को सुनता और handle करता है।
- Event Object: Event से जुड़ी detail (source, ID, command आदि) रखता है।
- Common Interfaces: ActionListener, ItemListener, MouseListener, KeyListener।
- Flow: Source → Event Object → Listener → Action।