我的样板监听器:
class MyMouseMotionListener implements MouseMotionListener {
public void mouseDragged(MouseEvent e) {
System.out.println("Dragged...");
}
public void mouseMoved(MouseEvent e) {
System.out.println("Moved...");
}}
很简单,但我要将它添加到什么地方才能监听系统范围的事件?我一直在研究 GraphicsDevice 和 AccessibleContext 子类之类的东西——它们不直接提供 MouseMotionListeners 的添加,但我希望它们能给我一些关于如何实现它的想法。
编辑:这根本不是基于事件的,但我发现了这一点:
MouseInfo.getPointerInfo().getLocation()
实际上在我的应用程序上下文之外返回鼠标位置,即使应用程序本身没有焦点。有什么方法可以观察到这一点并在其值发生变化时调度事件?
最佳答案
您可以使用 Toolkit.addAWTEventListener(AWTEventListener listener, long eventMask)
订阅 Java 容器层次结构中的所有鼠标事件。 . eventMask
参数确定监听器将接收哪些事件。
所以你的代码看起来像这样:
Toolkit.getDefaultToolkit().addAWTEventListener(new MyMouseMotionListener(), <a href="http://docs.oracle.com/javase/8/docs/api/java/awt/AWTEvent.html#MOUSE_MOTION_EVENT_MASK" rel="noreferrer noopener nofollow">AWTEvent.MOUSE_MOTION_EVENT_MASK</a>);
关于java - 是否可以让 MouseMotionListener 监听所有系统鼠标运动事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/504559/