Java - 如何检测某些多显示器设置的垂直位移?

Java - How to detect the vertical displacement of some multimonitor setups?

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

是否有一种可靠且有效的方法来跨多个显示器识别此偏移量?

感谢@Siguza 的评论,我能够完成我想要完成的事情。简单地说,你可以找到 Rectangle object for the monitor that the mouse is on by using this code: MouseInfo.getPointerInfo().getDevice().getDefaultConfiguration().getBounds()

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

的索引来访问

监视器的垂直位移在Rectangle对象的.y属性;该值可用于标识显示器的最顶部坐标。

@Siguza 的评论:

Haven't tested it, but according to the docs, GraphicsConfiguration.getBounds() sounds like what you're looking for. You should be able to get all monitors with GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenD‌​evices(), and their configurations with .getConfigurations(), but I idk how to choose from that array.