Java,获取当前屏幕的窗口边界
Posted
技术标签:
【中文标题】Java,获取当前屏幕的窗口边界【英文标题】:Java, get Window Bounds for current screen 【发布时间】:2021-01-03 03:13:47 【问题描述】:我正在使用两台分辨率不同的显示器。这将返回我的组件所在的显示:
DisplayMode dm = invoker.getGraphicsConfiguration().getDevice().getDisplayMode();
这会返回屏幕的窗口边界,包括任务栏:
Rectangle windowBounds = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds();
问题是第二行代码总是返回主屏幕边界,但是当我的组件位于第二个屏幕上时,我想获得辅助屏幕边界。有没有办法结合这两行来获取当前的屏幕窗口边界?
dm 具有当前屏幕的 getHeight() 和 getWidth(),但它们不考虑 Windows 任务栏。
【问题讨论】:
我已经编写 Java GUI 近 2 年了,从来不需要屏幕大小。为什么你的应用需要它?另见What is the XY problem? @AndrewThompson 我有一个用 show() 方法放置的 JPopMenu。当调用者离 Windows 任务栏太近时,JPopMenu 将绘制在任务栏下方。我已经使用this 解决方案来偏移 y 位置,并且它有效,但是如果您有两个分辨率不同的显示器,即使 JPopMenu 和调用程序在第二个显示器上,GraphicEnviroment 仍然使用主显示器的大小值。跨度> 【参考方案1】:据我所知,您希望获取当前设备的屏幕尺寸,以便个性化您的应用程序尺寸。 您可以使用 Java Toolkit 类来做到这一点。
首先获取并存储屏幕尺寸:
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
然后将屏幕的宽度和高度以整数形式存储:
// screen size width
int screenWidth = screenSize.getWidth;
// screen size height
int screenHeight = screenSize.getHeight;
将宽度和高度存储为整数后,您可以像使用其他原始变量一样使用和比较它们。
【讨论】:
以上是关于Java,获取当前屏幕的窗口边界的主要内容,如果未能解决你的问题,请参考以下文章