Java MouseListener: Mouse से सम्बंधित Events को Handle करने के लिए हमें MouseListener व MouseMotionListener Interfaces को Implement करना होता है। इसके साथ ही हम MouseWheelListener Method को भी Implement कर सकते हैं। लेकिन चूंकि सभी लोग Scroll Mouse का प्रयोग नहीं करते हैं, इसलिए यदि हम इस Interface को Implement करते भी हैं, तो भी Scrolling से सम्बंधित Events केवल Scroll Mouse Use करने वाले Computers पर ही Generate व Access हो पाते हैं। हम आगे जो Example Applet Develop कर रहे हैं, उसमें Mouse से सम्बंधित विभिन्न Events को Handle किया गया है। इस Applet Program में Mouse के Pointer की Current Coordinate Position को Applet के Status Bar में Display किया गया है।
इस Applet Example Program में जब भी Mouse के Button को Press किया जाता है, तो Mouse Pointer की Current Position पर “Down” Word Display होता है। जब भी Mouse के Button को Release किया जाता है, तो Mouse Pointer की Current Position पर “Up” Word Display होता है।
इसी तरह से जब भी Mouse के Button को Click किया जाता है, तो Applet के Top-Left Corner पर “Mouse Clicked” Word Display होता है। इसी तरह से जब Mouse का Pointer Applet Window की Border से बाहर जाता है या Applet Window के Display Area में आता है, Applet पर एक Message Display होता है।
// File Name : MouseListeners.java
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class MouseListeners extends Applet
implements MouseListener, MouseMotionListener
{
String message = "";
int xPosition = 0, yPosition = 0; //Coordinates of Mouse Pointer
public void init()
{
addMouseListener(this);
addMouseMotionListener(this);
}
// Handle Mouse Click Event
public void mouseClicked(MouseEvent mousEvnt)
{
// Save Coordinates
xPosition = 0;
yPosition = 10;
message = "Mouse Clicked";
repaint();
}
// Handle Mouse Enter Event in Applet Window Display Area
public void mouseEntered(MouseEvent mousEvnt)
{
// Save Coordinates
xPosition = 0;
yPosition = 10;
message = "Mouse Entered";
repaint();
}
// Handle Mouse Exit Event From Applet Window Border
public void mouseExited(MouseEvent mousEvnt)
{
// Save Coordinates
xPosition = 0;
yPosition = 10;
message = "Mouse Exited";
repaint();
}
// Handle Mouse Button Press Event in Applet Window
public void mousePressed(MouseEvent mousEvnt)
{
// Save Coordinates
xPosition = mousEvnt.getX();
yPosition = mousEvnt.getY();
message = "Down";
repaint();
}
// Handle Mouse Button Released Event in Applet Window
public void mouseReleased(MouseEvent mousEvnt)
{
// Save Coordinates
xPosition = mousEvnt.getX();
yPosition = mousEvnt.getY();
message = "Up";
repaint();
}
// Handle Mouse Drag Event in Applet Window
public void mouseDragged(MouseEvent mousEvnt)
{
// Save Coordinates
xPosition = mousEvnt.getX();
yPosition = mousEvnt.getY();
message = "*";
showStatus("Dragging mouse at "+ xPosition + ", " + yPosition);
repaint();
}
// Handle Mouse Moved Event in Applet Window
public void mouseMoved(MouseEvent mousEvnt)
{
// Show Status
showStatus("Dragging mouse at " +
mousEvnt.getX() + ", " + mousEvnt.getY());
repaint();
}
// Display Message in Applet Window
public void paint(Graphics g)
{
// Show Status
g.drawString(message, xPosition, yPosition);
}
}
इस उदाहरण Applet Program में हमने MouseListener व MouseMotionListener दोनों Interfaces को Implement किया है। इन दोनों Interfaces में वे Methods Include किए गए हैं, जिन्हें Implement करके हम विभिन्न प्रकार के Mouse Events को Handle कर सकते हैं।
चूंकि एक Applet में ही विभिन्न प्रकार के Mouse Events Generate होते हैं, इसलिए Applet ही विभिन्न प्रकार के Mouse Events का Source होता है और विभिन्न प्रकार के Mouse Events को Listen करने वाला Listener भी Applet ही होता है।
इस स्थिति में हमने Applet के init() Method को Override करके Event Generate करने वाले Source यानी Applet के साथ फिर से इसी Applet को Listener के रूप में निम्नानुसार Register किया है:
public void init()
{
addMouseListener(this);
addMouseMotionListener(this);
}
चूंकि हम हमारी Applet Class में ही Mouse के Listeners को Implement कर रहे हैं, इसलिए हमारा Applet ही Generate होने वाली विभिन्न Events का Listener होता है और हम जिस Class में होते हैं, उसी Class को Refer करने के लिए this Object को Use कर सकते हैं, इसलिए Listener के Reference के रूप में हमने this Object को Use किया है।
इसी तरह से हम जिस Class में होते हैं, उस Class के Object के लिए किसी भी Methods को बिना Object के साथ Dot Operator का प्रयोग किए हुए, Directly Use कर सकते हैं। इसीलिए हमने addMouseListener() व addMouseMotionListener() दोनों को बिना किसी Object के Directly Call किया है। यदि हम किसी अन्य Class में इसी काम को करना चाहते तो हमें, निम्नानुसार Syntax का प्रयोग करना पडता:
SourceObject.addMouseListener(ListenerObject);
जब इस Applet को Run करके Mouse से Events को Generate करते हैं, तब विभिन्न Events Generate करने वाला Source Object Applet ही होता है और विभिन्न प्रकार के Events को Handle करने के Methods को इसी Applet Class में Implement किया गया है, इसलिए ये Applet ही विभिन्न प्रकार के Events को Listen भी करता है और हर Event के Response में Appropriate Method को Invoke कर देता है।
जिस तरह से हम किसी Applet में उपरोक्त दो तरीकों से Delegation Event Handling को Perform कर सकते हैं, उसी तरह से हम किसी Application में भी Delegation Event Handling को Apply कर सकते हैं। इस प्रक्रिया को हम निम्नानुसार Example द्वारा समझ सकते हैं:
// File Name : MyListenrFrame.java
import java.awt.*;
import java.awt.event.*;
public class MyListenerFrame extends Frame
{
Button btnOK, btnCancel;
// The main Method
public static void main(String args[])
{
MyListenerFrame window = new MyListenerFrame();
}
// Constructor
public MyListenerFrame()
{
super("My First Event Handled Window");
setLayout(null);
// Creating Event Generator Source Button Objects
btnOK = new Button("OK");
btnCancel = new Button("Cancel");
btnOK.setBounds(40,45,50,25);
btnCancel.setBounds(100,45,50,25);
add(btnOK);
add(btnCancel);
// Creating Listener Object so that it can Listen Button's Events
MyFirstListener listenCommandButtonEvent = new MyFirstListener();
// Register Buttons with Listener
btnOK.addActionListener(listenCommandButtonEvent);
btnCancel.addActionListener(listenCommandButtonEvent);
// Display the window in a separate size
setVisible(true);
setSize(200,100);
}
}
// The Listener Class
class MyFirstListener implements ActionListener
{
public void actionPerformed(ActionEvent actnEvnt)
{
Button source = (Button)actnEvnt.getSource();
if(source.getActionCommand() == "OK")
source.setLabel("Clicked");
if(source.getActionCommand() == "Cancel")
source.setLabel("UnClick");
}
}
इसी Program को हम एक और तरीके से निम्नानुसार लिख सकते हैं, जिसमें मुख्य Class में ही ActionListener को Implement कर लिया गया है। ये Program निम्नानुसार है:
// File Name : MyListenrFrame.java
import java.awt.*;
import java.awt.event.*;
public class MyListenerFrame extends Frame implements ActionListener
{
Button btnOK, btnCancel;
// The main Method
public static void main(String args[])
{
MyListenerFrame window = new MyListenerFrame();
}
// Constructor
public MyListenerFrame()
{
super("My First Event Handled Window");
setLayout(null);
// Creating Event Generator Source Button Objects
btnOK = new Button("OK");
btnCancel = new Button("Cancel");
btnOK.setBounds(40,45,50,25);
btnCancel.setBounds(100,45,50,25);
add(btnOK);
add(btnCancel);
// Register Buttons with Listener
btnOK.addActionListener(this);
btnCancel.addActionListener(this);
// Display the window in a separate size
setVisible(true);
setSize(200,100);
}
public void actionPerformed(ActionEvent actnEvnt)
{
Button source = (Button)actnEvnt.getSource();
if(source.getActionCommand() == "OK")
source.setLabel("Clicked");
if(source.getActionCommand() == "Cancel")
source.setLabel("UnClick");
}
}
इस Program में हमने हमारे MyListenerFrame Class में ही ActionListener को Implement कर लिया है। जब हम इस तरह से किसी Interface को Implement करते हैं, तब Current Frame ही हमारा Event Listener होता है, इसलिए जिन Event Generate करने वाले Source Objects को हमें Listener से Register करना होता है, उन सभी को addActionListener() Method द्वारा Current Frame से ही Register किया जाता है और Current Frame को Refer करने के लिए this Object का प्रयोग किया जाता है। (Java MouseListener)
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Java in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Java Programming Language in Hindi | Page: 682 | Format: PDF