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().getScreenDevices(), and their configurations with .getConfigurations(), but I idk how to choose from that array.
在许多具有不同支架高度的显示器的多显示器设置中,可以在软件中调整显示器的垂直位置,以便它们的图形正确对齐。在 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().getScreenDevices(), and their configurations with .getConfigurations(), but I idk how to choose from that array.