我们知道JComponent有几种方法可以添加各种监听器。一个例子是addMouseMotionListneer()
。
在MouseMotionListener
中,有两种方法可以覆盖:
public void mouseMoved(MouseEvent e){}
public void mouseDragged(MouseEvent e){}
每当移动鼠标时,都会调用mouseMoved()
。
我的问题是:
1)Java如何检测鼠标移动?是不是有很多较低级别的东西(比如与鼠标驱动程序进行通信等等)Java在我们背后做什么?
2)我知道如果我们想检测鼠标移动,我们只需使用awt
中的事件监听器。但有没有可能我们可以编写自己的侦听器来检测鼠标移动?或者我们可以简单地忘记它,因为这是不可能的任务?
答案 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+")");
}
}