在许多具有不同支架高度的显示器的多显示器设置中,可以在软件中调整显示器的垂直位置,以使其图形正确对齐。将垂直位移添加到Windows鼠标坐标以实现此效果。在图中以紫色显示:
java - Java-如何检测某些多监视器设置的垂直位移?-LMLPHP
我正在构建一个程序,该程序需要知道用户的鼠标何时到达其任何显示器的顶部。我尝试使用MouseInfo.getPointerInfo().getLocation().y==0,但是当显示器已在软件中替换时,此方法将不起作用,因为显示器的顶部可能并不总是为零。

是否存在可靠且有效的方式来识别多个显示器上的偏移量?

最佳答案

感谢@Siguza的评论,我得以完成自己想做的事情。简而言之,您可以使用以下代码找到鼠标所在的监视器的Rectangle对象:MouseInfo.getPointerInfo().getDevice().getDefaultConfiguration().getBounds()

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

监视器的垂直位移在.y对象的Rectangle属性中。此值可用于标识监视器的最高坐标。

@Siguza的评论:


  尚未测试过,但根据文档,GraphicsConfiguration.getBounds()听起来像您想要的东西。您应该可以使用GraphicsEnvironment.getLocalGraphicsEnvironment()。getScreenD‌evices()以及使用.getConfigurations()的配置来获取所有监视器,但是我想知道如何从该数组中进行选择。

关于java - Java-如何检测某些多监视器设置的垂直位移?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40322941/

10-10 01:14
查看更多