java - 是否可以让 MouseMotionListener 监听所有系统鼠标运动事件?

标签 java swing awt

我的样板监听器:

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/

相关文章:

java - 当 Java Swing Action Listener 类扩展另一个类时,避免无限循环

java - 用户总是需要按两次谷歌登录按钮

java - 包含键和对象列表的排序映射

java - 如何更改 java 代码,以便其子类可以对其进行定制,而影响最小

java - 右对齐图片上的文字

java - 无法找出我的程序中的问题

java - 为什么这个简单的循环会导致我的 JFrame 出现问题行为

java - 如何使用 XML 输入变量以根据 XSD 进行验证

java - 更改单元格颜色在 Netbeans 上不起作用

java - 使用 JTextField 从用户获取正则表达式。如何让它显示为选项卡而不是后跟 t