您的位置:首页 > 其它

Swing的MouseDrag(),MouseMoved()没有被调用问题

2013-08-09 08:34 337 查看
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);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐