为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

潇潇雨雨 2019-11-03 08:04:27
我需要使用Swing实现一个类,当用户单击屏幕上的任意位置时,该类可以获取鼠标坐标。如果我想在自己的窗口中获取鼠标坐标,则可以使用MouseListener,但是即使用户在程序外部单击也可以使用它。我希望我的班级表现得像KColorChooser一样:用户单击下拉按钮,他可以单击屏幕上的任何位置以获得该斑点的颜色。但我不知道使用纯Java是否可行。
查看完整描述

4 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

忘记了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完成。



查看完整回答
反对 回复 2019-11-04
?
撒科打诨

TA贡献1934条经验 获得超2个赞

采用


import java.awt.MouseInfo;

import java.awt.Point;

import java.awt.PointerInfo;


PointerInfo inf = MouseInfo.getPointerInfo();

Point p = inf.getLocation();

px和py将为您提供窗口外的坐标。



查看完整回答
反对 回复 2019-11-04
  • 4 回答
  • 0 关注
  • 407 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信