mouseDragged
क्यों हैं 0-
का उपयोग करते समय केवल MouseAdapter
का उपयोग करते समय प्राप्त होते हैं?MouseAdapter का उपयोग करते समय माउस ड्रैग किए गए ईवेंट क्यों नहीं प्राप्त किए जाते हैं?
जावा में माउस-इवेंट प्राप्त करने के लिए दो अमूर्त एडाप्टर कक्षाएं हैं;
MouseAdapter
और MouseMotionAdapter
।
दोनों वर्गों एक mouseDragged(MouseEvent e)
-method है, लेकिन
MouseAdapter
में एक काम करने के लिए प्रतीत नहीं होता है; mouseDragged
-events
कभी भी इस के साथ नहीं मिलता है।
दोनों वर्गों MouseMotionListener
-interface जो
को परिभाषित करता है mouseDragged
-event लागू है, तो मुझे समझ नहीं आता क्यों यह
है उन दोनों पर सही ढंग से काम नहीं कर रहा।
यहाँ नमूना कोड जो इस मुद्दे से पता चलता है:
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JFrame;
public class SwingApp extends JFrame
{
public SwingApp()
{
// No mouseDragged-event is received when using this :
this.addMouseListener(new mouseEventHandler());
// This works correct (when uncommented, of course) :
// this.addMouseMotionListener(new mouseMovedEventHandler());
setBounds(400,200, 550,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
}
public static void main(String args[])
{
new SwingApp();
}
class mouseEventHandler extends MouseAdapter
{
@Override
public void mouseDragged(MouseEvent e) // Why is this method never called ?
{
System.out.println(String.format("MouseDragged via MouseAdapter/X,Y : %s,%s ", e.getX(), e.getY()));
}
}
class mouseMovedEventHandler extends MouseMotionAdapter
{
@Override
public void mouseDragged(MouseEvent e)
{
System.out.println(String.format("MouseDragged via MouseMotionAdapter/X,Y : %s,%s ", e.getX(), e.getY()));
}
}
}