请问如何在Java中获取窗口外部的鼠标单击坐标

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


我希望我的班级表现得像KColorChooser一样:用户单击下拉按钮,他可以单击屏幕上的任何位置以获得该斑点的颜色。但我不知道使用纯Java是否可行。


潇潇雨雨
浏览 408回答 4
4回答

阿晨1998

忘记了GlassPane,还有另一种100%本机Java方法可以在OS X和Windows上运行。Java已经永远支持半透明其在OS X和Java窗口现在支持其在Windows窗口半透明太(自从Java 1.6.0_10左右,需要进行检查)。因此,诀窍是:单击“选择颜色”工具后,您将创建一个几乎透明的无边界Java窗口,覆盖整个屏幕。您将其alpha设置为10(alpha从0变为255)。该alpha值是如此之低,用户不会注意到存在覆盖整个屏幕的非常薄的“几乎透明但只有非常非常半透明”的无边界窗口。现在,当用户单击覆盖整个屏幕的“将alpha设置为10的半透明无边界窗口”时,您得到了(x,y)。丢弃无边界的Java窗口。用Robot的getRgb(x,y),你就大功告成了。为什么将alpha设置为10而不是0?因为否则,单击不会被Java拦截,而是直接进入OS(至少这是OS X上事实的工作方式)。有一个阈值,我知道它不是设置为“ 1”,也不是“ 2”,大约是10左右。编辑我只是意识到您知道需要选择几种颜色,这比较棘手,但是仍然可以使用100%Java来完成。您可以使用“略微偏离”的颜色(受“几乎透明”的“不可见”层影响),或者单击时必须删除该层,获得正确的像素颜色,然后再次放置“几乎透明”的层。现在,这当然是骇客了,但是可以用100%Java完成。

撒科打诨

采用import java.awt.MouseInfo;import java.awt.Point;import java.awt.PointerInfo;PointerInfo inf = MouseInfo.getPointerInfo();Point p = inf.getLocation();px和py将为您提供窗口外的坐标。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java