Java में GUI, यूज़र्स के साथ इंटरैक्शन को माउस, कीबोर्ड और विभिन्न यूज़र कंट्रोल्स जैसे बटन, चेकबॉक्स, टेक्स्ट फील्ड आदि के माध्यम से इवेंट्स के रूप में प्रोसेस करता है। इन इवेंट्स को उचित तरीके से हैंडल किया जाना चाहिए ताकि Java को इवेंट-ड्रिवन प्रोग्रामिंग के रूप में लागू किया जा सके।
इवेंट हैंडलिंग में कंपोनेंट्स
- इवेंट्स
- इवेंट सोर्सेज
- इवेंट लिसनर्स/हैंडलर्स
इवेंट्स
- इवेंट्स को एक ऑब्जेक्ट के रूप में परिभाषित किया जाता है जो सोर्स ऑब्जेक्ट के स्टेट में परिवर्तन का वर्णन करता है।
- Java java.awt.event पैकेज के अंदर ऐसी कई इवेंट क्लासेज को परिभाषित करता है।
- कुछ इवेंट्स हैं: ActionEvent, MouseEvent, KeyEvent, FocusEvent, ItemEvent आदि।
इवेंट सोर्सेज
- एक सोर्स एक ऑब्जेक्ट है जो इवेंट जनरेट करता है।
- इवेंट जनरेशन तब होता है जब उस ऑब्जेक्ट का आंतरिक स्टेट किसी तरह से बदलता है।
- एक सोर्स को लिसनर्स रजिस्टर करने चाहिए ताकि लिसनर्स एक विशिष्ट प्रकार के इवेंट के बारे में नोटिफिकेशन प्राप्त कर सकें।
- कुछ इवेंट सोर्सेज हैं: बटन, चेकबॉक्स, लिस्ट, चॉइस, विंडो आदि।
इवेंट लिसनर्स
- एक लिसनर एक ऑब्जेक्ट है जिसे इवेंट होने पर सूचित किया जाता है।
- एक लिसनर की दो प्रमुख आवश्यकताएं हैं: यह एक या अधिक सोर्स ऑब्जेक्ट्स के साथ रजिस्टर्ड होना चाहिए ताकि इवेंट नोटिफिकेशन प्राप्त हो सके और इसे उन नोटिफिकेशन्स को प्राप्त करने और प्रोसेस करने के लिए मेथड्स को इम्प्लीमेंट करना चाहिए।
- Java ने 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" मैसेज डायलॉग दिखता है।