在许多具有不同支架高度的监视器的多监视器设置中,可以用软件调整监视器的垂直位置,使其图形正确对齐。 Windows鼠标坐标中添加了垂直位移以实现此效果;在图中以紫色显示:
我正在构建一个程序,需要知道用户的鼠标何时到达其任何监视器的顶部。我尝试使用MouseInfo.getPointerInfo().getLocation().y==0
,但是当显示器在软件中移位时这不起作用,因为显示器的顶部可能并不总是为零。
是否有一种可靠而有效的方法来识别多个显示器的偏移量?
答案 0 :(得分:1)
感谢@ Siguza的评论,我能够做我想要完成的事情。简而言之,您可以使用以下代码找到鼠标所在的显示器的Rectangle
对象:MouseInfo.getPointerInfo().getDevice().getDefaultConfiguration().getBounds()
使用Windows中的监视器数字索引,也可以为每个监视器找到Rectangle
。代码GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0].getDefaultConfiguration().getBounds()
将返回主监视器的Rectangle
(索引0),可以通过更改GraphicsDevice
的索引来访问其他监视器
监视器的垂直位移位于.y
对象的Rectangle
属性中;此值可用于标识监视器的最顶部坐标。
@ Siguza的评论:
尚未对其进行测试,但根据文档,GraphicsConfiguration.getBounds()听起来就像您正在寻找的那样。您应该能够使用GraphicsEnvironment.getLocalGraphicsEnvironment()。getScreenD evices()获取所有监视器,并使用.getConfigurations()配置它们,但我想知道如何从该阵列中进行选择。