Java KeyListener

Java KeyListener: Keyboard Events को Handled करने के लिए भी हमें समान Architecture को Use करना होता है, जिसे हमने Mouse Events को Handle करने के लिए Use किया है। अन्तर केवल इतना है कि जब हम Keyboard के Events को Handle करते हैं, तब हमें KeyListener Interface को Implement करना होता है।

जैसाकि हम जानते हैं कि जब Keyboard से किसी Key को Press किया जाता है, तब KEY_PRESSED Event Generate होता है, जिसे Handle करने के लिए keyPressed() Method Invoke होता है।

इसी तरह से जब Keyboard के किसी Key को Press करके Release करते हैं, तब KEY_RELEASED Event Generate होता है और इस Event को Handle करने के लिए keyReleased() Method Invoke होता है। जब Keyboard से KEY_TYPED Event Generate होता है, तब इस Event को Handle करने के लिए keyTyped() Method Invoke होता है।

User जब भी Keyboard पर किसी Key को Press करता है, तब कम से कम दो Events KEY_PRESSEDKEY_RELEASED तो Generate होते ही हैं, फिर भी अक्सर तीनों Events Generate हो जाते हैं।

जब हमें केवल Key के Character को ही Process करना होता है, तब हमें KEY_PRESSEDKEY_RELEASED इन दोनों Events को Handled करने की जरूरत नहीं होती है। लेकिन जब हमें Special Keys के साथ Processing करनी होती है, तब हमें KEY_PRESSED Event को ही Handle करना होता है।

कोई Key Process करने से पहले हमें एक काम और करना पडता है। हमें जिस Object के लिए Key को Press करना होता है, उस Object के लिए Input Focus को प्राप्त करना होता है, ताकि Input होने वाली Key उस Object पर ही जाए। Input Focus को प्राप्त करने के लिए हमें requestFocus() Method को Use करना होता है, जिसे Component Package में Define किया गया है।

यदि हम इस Method द्वारा अपने Application के लिए Focus प्राप्त नहीं करेंगे, तो हमारा Program Press किए गए Key को Receive नहीं करेगा। अगले Program में हमने Keyboard Input को अपने Applet में प्राप्त किया है और Keyboard से आने वाली Key को Applet पर Display किया है, साथ ही Generate होने वाले Event को भी Applet पर दर्शाया है।

	// File Name : KeyStrockDemonstracton.java
	import java.awt.*;
	import java.awt.event.*;
	import java.applet.*;
	
	public class KeyStrockDemonstracton extends Applet implements KeyListener
	{
		String message = "";
		int xPosition = 10, yPosition = 20;	// Output Coordinates
		
		public void init()
		{
			addKeyListener(this);		// Register Listener with Applet
			requestFocus();			// Request Input Focus for current program
		}
	
		public void keyPressed(KeyEvent keyEvnt)
		{
			showStatus("Key Pressed");
		}
	
		public void keyReleased(KeyEvent keyEvnt)
		{
			showStatus("Key Released");
		}
	
		public void keyTyped(KeyEvent keyEvnt)
		{
			message = message + keyEvnt.getKeyChar();
			repaint();
		}
	
		public void paint(Graphics g)
		{
			g.drawString(message, xPosition, yPosition);
		}
	}
Java KeyListener - KeyPressed Event

इस Program में हमने Applet में Keyboard के तीनों Events को Handle किया है। चूंकि ये Applet Event Generate करने वाला Source भी है और Event Listen करने वाला Listener Interface भी इसी Applet Class में Implement किया गया है, इसलिए Source Applet Class को उसी Listener Applet Class से Register करने के लिए हमने Applet के init() Method को Override करके निम्नानुसार Define किया है:

	public void init()
	{
		addKeyListener(this);	// Register Listener with Applet
		requestFocus();		// Request Input Focus for current program
	}

Applet विभिन्न Keystroke Events को प्राप्त कर सके, इसके लिए हमने requestFocus() Method को भी इसी Method में Call किया है।

showStatus() Method Applet के Status Bar को Represent करता है, इसलिए विभिन्न प्रकार के Messages को Display करने के लिए हमने इस Method को Use किया है।

getKeyChar() Method Keyboard से Press किए गए Key के Character को Return करता है, इसलिए इस Method द्वारा हमने Keyboard से आने वाले Characters को Message नाम के String Object में प्राप्त किया है। फिर paint() Method में इस Message में Stored Message को Applet पर Draw किया है।

जब हम Keyboard से किसी Key को Type करते हैं, तब एक KeyEvent Object Generate होता है और KeyTyped() Method Invoke होता है। इस KeyEvent Object में Type किए गए Key का Character होता है। इस Character को प्राप्त करने के लिए keyEvnt Object से getKeyChar() Method को निम्नानुसार Use करके message नाम के String Object में प्राप्त किया गया है।

	public void keyTyped(KeyEvent keyEvnt)
	{
		message = message + keyEvnt.getKeyChar();
		repaint();
	}

चूंकि जब repaint() Method paint() Method को Execute करके Applet की Screen को Repaint करता है, तब message नाम के Object में जो भी String होती है, वह Screen पर Draw हो जाती है। इसलिए पिछला Message Delete हो जाता है और नया Message Paint हो जाता है, जो कि message नाम के Object में होता है। इस Method में हमने message Object को जिस तरह से हर KEY_TYPE Event पर Update किया है।

ऐसा इसलिए किया गया है, ताकि message का पुराना Character भी Applet पर Draw हो जाए। यदि हम इस message Object को इस प्रकार से Update ना करें, तो हर बार message में Currently Press किया गया, Character ही होगा और केवल एक ही Character Screen पर Display होगा।

इस Applet को Run करते समय यदि हम किसी Special Key जैसे कि Shift, Ctrl, Alt या किसी Function Key को Press करते हैं, तो हमारी Screen पर कुछ भी Display नहीं होता है। इन Keys को Respond करने के लिए हमें keyPressed() Handler को Use करना होता है। इन Keys को keyTyped() Method द्वारा Manage नहीं किया जा सकता है। इस Keys को Identify करने के लिए हमें इनके Virtual Codes को Use करना होता है। इस प्रक्रिया को हम अगले Program द्वारा समझ सकते हैं।

	// File Name : SpecialKeyStrockDemonstracton.java
	import java.awt.*;
	import java.awt.event.*;
	import java.applet.*;
	
	public class SpecialKeyStrockDemonstracton extends Applet implements KeyListener
	{
		String message = "";
		int xPosition = 10, yPosition = 20;	// Output Coordinates
		
		public void init(){
			addKeyListener(this);	// Register Listener with Applet
			requestFocus();		// Request Input Focus for current program
		}
	
		public void keyPressed(KeyEvent keyEvnt){
			showStatus("Key Pressed");
	
			int key = keyEvnt.getKeyCode();
			switch(key)
			{
				case KeyEvent.VK_F1:
				message += "<F1>";
				break;
	
				case KeyEvent.VK_F2:
				message += "<F2>";
				break;
	
				case KeyEvent.VK_F3:
				message += "<F3>";
				break;
	
				case KeyEvent.VK_PAGE_DOWN:
				message += "<PgDn>";
				break;
	
				case KeyEvent.VK_PAGE_UP:
				message += "<PgUp>";
				break;
	
				case KeyEvent.VK_LEFT:
				message += "<Left Arrow>";
				break;
	
				case KeyEvent.VK_UP:
				message += "<Up Arrow>";
				break;
			}
			repaint();
		}
	
		public void keyReleased(KeyEvent keyEvnt)
		{
			showStatus("Key Released");
		}
	
		public void keyTyped(KeyEvent keyEvnt)
		{
			message = message + keyEvnt.getKeyChar();
			repaint();
		}
	
		public void paint(Graphics g)
		{
			g.drawString(message, xPosition, yPosition);
		}
	}
Java KeyListener - Special Keys

Java Programming Language in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Java in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

Java Programming Language in Hindi | Page: 682 | Format: PDF

BUY NOW GET DEMO REVIEWS