Java 屏幕上光标下任意位置的RGB值

Java 屏幕上光标下任意位置的RGB值,java,swing,jframe,Java,Swing,Jframe,我的代码将运行并编译。如果您在JFrame内的任何位置悬停,它都会工作,但是当您进入屏幕时,它只会有时工作,如果工作,它只会接受白色的RGB值,有时是灰色的。我不知道为什么每次我跳出框时它都不工作,为什么它不能得到帧外的所有RGB值,但在帧内工作。有人能看一下吗?我附上了一个屏幕截图,悬停时,它在盒子外面呈现白色。谢谢 Swing仅在通过Swing组件生成事件时接收鼠标事件 如果您想在屏幕上的任何位置接收事件,那么您的帧需要覆盖整个屏幕 您可以使用以下命令最大化帧: frame.setExten

我的代码将运行并编译。如果您在JFrame内的任何位置悬停,它都会工作,但是当您进入屏幕时,它只会有时工作,如果工作,它只会接受白色的RGB值,有时是灰色的。我不知道为什么每次我跳出框时它都不工作,为什么它不能得到帧外的所有RGB值,但在帧内工作。有人能看一下吗?我附上了一个屏幕截图,悬停时,它在盒子外面呈现白色。谢谢


Swing仅在通过Swing组件生成事件时接收鼠标事件

如果您想在屏幕上的任何位置接收事件,那么您的帧需要覆盖整个屏幕

您可以使用以下命令最大化帧:

frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
在使框架可见之前


当然,现在框架将覆盖背景,因此您将看不到桌面,因此您需要使框架透明。有关更多信息和示例,请参见上的Swing教程部分。

虽然这是一个好主意,而且它确实可以在屏幕上展开,但有时它仍然只接受RGB值。@Millie,robot.delay2000;-你为什么要耽搁?生成MouseEvent时将检索像素。所以更新的频率是由鼠标移动来控制的。去掉这个也不能解决这个问题。我仍然不确定我错在哪里。@Millie,它有时仍然只接受RGB值-我不知道该注释指的是什么1您的原始代码,或者修改代码,因为您尚未更新问题以显示当前正在测试的代码。框架将覆盖屏幕,因此框架外没有其他内容。我已经说过了,你不能在你的框架之外回应MouseeEvent。然后我说你需要使框架透明。如果您想从桌面上的任何地方获得鼠标事件,那么您需要在一个较低级别的API(如JNI)中编写代码,我对此一无所知。
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);