MouseDrag()与MouseMoved()没有被调用是因为添加的监听器有问题
下面就这个问题进行说明:
这里监听器为MouseAdpter的子类
使用addMouseMotionListener()时
MouseAdpter.MouseDraged()与MouseAdpter.MouseMoved()会被调用。
移动时-------------调用MouseMoved()
按住鼠标左键+移动-------调用MouseDraged()
下面全面说明一下MouseAdpter各个方法。
当使用addMouseListener()方法添加MouseAdpter时有效
mouseClicked(MouseEvent e)
mouseEntered(MouseEvent e) --------当鼠标进入(添加了监听器的)组件时调用,包括子组件
mouseExited(MouseEvent e) ----------当鼠标离开(添加了监听器的)组件时调用,包括子组件
mousePressed(MouseEvent e)
mouseReleased(MouseEvent e)
当使用addMouseMotionListener()方法添加MouseAdapter时有效
mouseDragged(MouseEvent e)
mouseMoved(MouseEvent e)
当使用addMouseWheelListener()方法添加MouseAdapter时有效(针对鼠标滑轮)
mouseWheelMoved(MouseWheelEvent e)
--------------------------------------------------------
MouseEvent的有用方法:
getX(),getY()----------------获取鼠标当前的位置
getModifies()--------------获取鼠标的左键或键盘点击
getClickCount()-----------获取鼠标点击的次数
getSource()---------------获取产生事件的事件源返回Object。
以下是测试代码:
class DnDAdapter extends MouseAdapter
{
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
// TODO Auto-generated method stub
super.mouseWheelMoved(e);
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
System.out.print("Clicked:");
System.out.println("("+e.getX()+","+e.getY()+")");
super.mouseClicked(e);
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
System.out.print("Entered:");
System.out.println("("+e.getX()+","+e.getY()+")");
super.mouseEntered(e);
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
System.out.print("Exited:");
System.out.println("("+e.getX()+","+e.getY()+")");
super.mouseExited(e);
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
System.out.print("Pressed:");
System.out.println("("+e.getX()+","+e.getY()+")");
super.mousePressed(e);
}
@Override
public void mouseReleased(MouseEvent e) {
System.out.print("Released:");
System.out.println("("+e.getX()+","+e.getY()+")");
super.mouseReleased(e);
}
public void mouseDragged(MouseEvent e) {
System.out.println("("+e.getX()+","+e.getY()+")");
super.mouseDragged(e);
}
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
//System.out.println("("+e.getX()+","+e.getY()+")");
super.mouseMoved(e);
}
}