【发布时间】: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 仍然使用主显示器的大小值。跨度>
标签: java user-interface awt