इवेंट हैंडलिंग (Event Handling)

इवेंट का अर्थ किसी घटना के होने से है। उदाहरण के लिए माउस का प्राइमरी बटन दबाने पर क्लिक इवेंट, माउस को हिलाने पर मूव इवेंट तथा कीबोर्ड पर किसी बटन को दबाने पर कीप्रेस इवेंट उत्पन्न होते हैं। जावा में हम इवेंट आधारित प्रोग्रामिंग कर सकते हैं। उदाहरण के लिए यदि हम माउस के क्लिक करने पर या कीबोर्ड के किसी बटन को प्रेस करने पर कोई कोड रन कराना चाहते हैं तो यह कार्य हम जावा में कर सकते हैं।

जावा में इवेंट्स को awt पैकेज में उपस्थित event पैकेज की कुछ क्लासों तथा इंटरफेसों की सहायता से संभाला जा सकता है। जावा में इवेंट हैंडलिंग निम्न दो सिद्धांतों पर आधारित होती हैः

  • इवेंट सोर्स (Event Source)
  • इवेंट लिसनर (Event Listener)

ऐसा आॅब्जेक्ट जो इवेंट उत्पन्न करता है, उसे इवेंट सोर्स कहते हैं तथा ऐसा आॅब्जेक्ट जो इन इवेंट्स को रिसीव करता है, उसे इवेंट लिसनर कहते हैं। इवेंट सोर्स आॅब्जेक्ट के पास उन सभी इवेंट लिसनर्स की लिस्ट होती है जो इन इवेंट्स को रिसीव कर सकते हैं।

जब इवेंट सोर्स आॅब्जेट कोई इवेंट उत्पन्न करता है तो वह सभी लिसनर्स को इसके बारे में सूचित कर देता है। प्रत्येक इवेंट सोर्स के पास लिसनर को सूचित करने के लिए अलग-अलग मैथड होते हैं। इसे प्रोग्राम में जोड़ने का प्रारुप निम्न होता हैः

addSTypListener(STypeListener listener);

उदाहरणः

addMouseListener(this);

java.awt.event पैकेज के कुछ लिसनर इंटरफेस निम्नानुसार हैंः

इंटरफ़ेस का नाम विवरण
MouseListener इसमें माउस इवेंट्स को हैंडल करने के लिए कुछ मैथड होते हैं जैसेः mouseClicked(...), mousePressed(...), mouseReleased(...), mouseEntered(...), mouseExited(...)
KeyListener इसमें कीबोर्ड इवेंट्स को हैंडल करने के लिए कुछ मैथड होते हैं जैसेः keyTyped(...), keyPressed(...), keyReleased(...)
ActionListener इसमें Button क्लास के इवेंट को हैंडल करने के लिए actionPerformed(...) मैथड होता है।
ItemListener इसमें किसी आइटम के सलैक्ट या डी-सलैक्ट करने से संबधित itemStateChanged(...) मैथड होता है।
TextListener इसमें टैक्स्ट के इवेंट से संबधित textValueChanged(...) मैथड होता है।

इसके अलावा java.awt पैकेज में कुछ इवेंट क्लास भी होती हैं। इनके कुछ मैथड्स की सहायता से भी इवेंट्स को आसानी से संभाला जा सकता है। इनमें से कुछ क्लास निम्न हैं-

क्लास का नाम मेथड का नाम
ActionEvent getModifiers(), getActionCommand()
ItemEvent getItem(), getStateChange(), getItemSelectable()
KeyEvent getKeyChar(), getKeyCode(), getKeyText(…)
MouseEvent getButton(), getClickCount(), getPoint(), getX(), getY()

नीचे दिए गए उदाहरण में एप्लेट में माउस द्वारा क्लिक की गई पोज़ीषन पर एक टैक्स्ट प्रिंट कराया गया है। इसके लिए प्रोग्राम में MouseListener इंटरफेस को इनहेरिट किया गया है तथा इसके mouseClicked() मैथड को डिफाइन किया गया है।

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

/*<applet code="MyApplet.class" width=300 height=200> */

public class MyApplet extends Applet implements MouseListener
{
	int x, y;
	public void init()
	{
		addMouseListener(this);
	}
	public void mouseClicked(MouseEvent e)
	{
		x = e.getX();
		y = e.getY();
		repaint();
	}
	public void paint(Graphics g)
	{
		g.drawString("Surendra", x, y);
	}

//following methods are overridden because
//they are abstract in MouseListener interface

	public void mousePressed(MouseEvent e){}
	public void mouseReleased(MouseEvent e){}
	public void mouseEntered(MouseEvent e){}
	public void mouseExited(MouseEvent e){}
}

नीचे दिए गए उदाहरण में एप्लेट में कीबोर्ड के किसी बटन को दबाने तथा छोड़ने पर एक टैक्स्ट प्रिंट कराया गया है। इसके लिए प्रोग्राम में KeyListener इंटरफेस को इनहेरिट किया गया है तथा इसके keyPressed() एवं keyReleased() मैथड को डिफाइन किया गया है।

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

/*<applet code="MyApplet.class" width=300 height=200> </applet>*/

public class MyApplet extends Applet implements KeyListener
{
	String str;
	public void init()
	{
		addKeyListener(this);
	}
	public void keyPressed(KeyEvent e)
	{
		str = "Key pressed";
		repaint();
	}
	public void keyReleased(KeyEvent e)
	{
		str = "Key released";
		repaint();
	}
	public void paint(Graphics g)
	{
		g.drawString(str, 10, 100);
	}
	public void keyTyped(KeyEvent e){}
}
सुझाव / कमेंट