Почему mouseDragged
- события получают только при использовании MouseMotionAdapter
а не при использовании MouseAdapter
?
В Java есть два абстрактных класса адаптера для получения событий мыши;
MouseAdapter
и MouseMotionAdapter
.
Оба класса имеют mouseDragged(MouseEvent e)
-метод, но
один в MouseAdapter
, кажется, не работает; mouseDragged
-СОБЫТИЯ
никогда не покончим с этим.
Оба класса реализуют MouseMotionListener
-интерфейс, который
определяет mouseDragged
-вент, поэтому я не понимаю, почему это
не работает правильно на них обоих.
Вот пример кода, который показывает эту проблему:
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()));
}
}
}