gpt4 book ai didi

java - 如何在Java中获取我的窗口外的鼠标点击坐标

转载 作者:IT老高 更新时间:2023-10-28 21:03:38 25 4
gpt4 key购买 nike

我需要实现一个类,使用Swing,可以在用户点击屏幕任意位置时获取鼠标坐标。如果我想在自己的窗口中获取鼠标坐标,我会使用 MouseListener,但我希望它即使在用户在我的程序外部单击时也能工作。

我希望我的类(class)表现得像 KColorChooser :用户单击下拉按钮,他可以单击屏幕上的任意位置以获取该点的颜色。但我不知道这是否可以使用纯 Java。

最佳答案

这是可能的,虽然有限:

为焦点事件添加 AWTEventListener。只要您的应用在单击按钮之前具有焦点,您就会收到焦点丢失事件。然后查询指针位置。

当然,限制是您的应用失去焦点。因此,这取决于您最终要实现的目标,这可能没有用。

如果您不想失去焦点,那么您将不得不暂时截取整个屏幕的屏幕截图,并将其显示在屏幕填充窗口中,该窗口像往常一样监听鼠标点击。

第一种方法的证明:

import java.awt.AWTEvent;
import java.awt.MouseInfo;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;

import javax.swing.JFrame;

public class Application1 {
public static void main(String[] args) {
Toolkit.getDefaultToolkit().addAWTEventListener(
new Listener(), AWTEvent.MOUSE_EVENT_MASK | AWTEvent.FOCUS_EVENT_MASK);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

private static class Listener implements AWTEventListener {
public void eventDispatched(AWTEvent event) {
System.out.print(MouseInfo.getPointerInfo().getLocation() + " | ");
System.out.println(event);
}
}
}

在生成的应用程序外部单击:

java.awt.Point[x=198,y=59] | java.awt.event.MouseEvent[MOUSE_EXITED, ...
java.awt.Point[x=976,y=503] | java.awt.FocusEvent[FOCUS_LOST, ...

第二点在应用之外。

关于java - 如何在Java中获取我的窗口外的鼠标点击坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2419555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com