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

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);
	}

	
}


  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值