Java – 如何检测一些多监视器设置的垂直位移?

在许多具有不同支架高度的监视器的多监视器设置中,可以用软件调整监视器的垂直位置,以使它们的graphics正确alignment。 垂直位移被添加到Windows鼠标坐标来提供这种效果; 在图中以紫色显示: 在这里输入图像描述 我正在构build一个程序,该程序需要知道用户的鼠标何时到达其任何监视器的顶部。 我尝试使用MouseInfo.getPointerInfo().getLocation().y==0 ,但是当监视器在软件中被移位时,这将不起作用,因为监视器的顶部可能不总是为零。

是否有一种可靠和有效的方法来识别多个显示器之间的偏移量?

感谢@ Siguza的评论,我能够做到我正在努力完成的任务。 简单地说,您可以使用以下代码找到鼠标所在监视器的Rectangle对象: MouseInfo.getPointerInfo().getDevice().getDefaultConfiguration().getBounds()

也可以在Windows中使用显示器的数字索引为每个显示器找到Rectangle 。 代码GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0].getDefaultConfiguration().getBounds()将返回主监视器的Rectangle (索引0),其他监视器可以通过改变GraphicsDevice的索引

监视器的垂直位移在Rectangle对象的.y属性中; 这个值可以用来识别监视器的最高坐标。

@ Siguza的评论:

还没有测试过,但根据文档,GraphicsConfiguration.getBounds()听起来像你在找什么。 你应该可以通过GraphicsEnvironment.getLocalGraphicsEnvironment()。getScreenD evices()获得所有的监视器,并且可以通过.getConfigurations()来获得它们的配置,但是我想知道如何从这个数组中选择。