4 回答

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完成。

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将为您提供窗口外的坐标。
添加回答
举报