Java如何检测鼠标移动

时间:2015-07-07 20:17:26

标签: java events customization listeners

我们知道JComponent有几种方法可以添加各种监听器。一个例子是addMouseMotionListneer()

MouseMotionListener中,有两种方法可以覆盖:

public void mouseMoved(MouseEvent e){}
public void mouseDragged(MouseEvent e){}

每当移动鼠标时,都会调用mouseMoved()

我的问题是

1)Java如何检测鼠标移动?是不是有很多较低级别的东西(比如与鼠标驱动程序进行通信等等)Java在我们背后做什么?

2)我知道如果我们想检测鼠标移动,我们只需使用awt中的事件监听器。但有没有可能我们可以编写自己的侦听器来检测鼠标移动?或者我们可以简单地忘记它,因为这是不可能的任务?

2 个答案:

答案 0 :(得分:0)

你可以使用awt的事件监听器,但这不是平台独立的。
在某些平台上它不会正常工作。

是可以通过实现MouseMotionListener或MouseListener接口编写我们自己的侦听器来检测鼠标移动,并为某些特殊事件添加自定义方法

OR

你必须遵循委托事件模型。因此,创建一个类MyMouseEvent,MyMouse和接口MyMouseListner

interface MyMouseListener{
   public void clicked();
}

Class MyMouse{
MyMouseListener m;
public void register(MyMouseListener  m){
 this.m=m;
  }
}

class MyMouseEvent{
  //use in case of multiple event listener   
}

然后通过创建对象

进行注册
MyMouse m = new MyMouse().register(new MyMouseListener(){
public void clicked(){
   // your code here
}
})

答案 1 :(得分:0)

这样的事情可能就是你所需要的:

 import java.awt.MouseInfo;
 import java.awt.GridLayout;
 import java.awt.Color;
 import java.awt.Dimension;
 import java.awt.event.MouseListener;
 import java.awt.event.MouseEvent;

 import javax.swing.*;

 public class mice {
 public static void main(String[] args) throws InterruptedException{
    while(true){
        //Thread.sleep(100);
        System.out.println("("+MouseInfo.getPointerInfo().getLocation().x+", "+MouseInfo.getPointerInfo().getLocation().y+")");
    }
}