gpt4 book ai didi

Java - 如何避免用未修饰的或自定义的 LookAndFeel 窗口覆盖任务栏?

转载 作者:行者123 更新时间:2023-11-29 06:41:41 26 4
gpt4 key购买 nike

是的,有些问题很接近:)

Java 中有一个 Bug(自 2011 年以来一直存在并被报告,似乎也没有努力修复它 - 应该在 VM 的 native 端处理)

也就是说,当您最大化“未修饰”窗口或使用 PLAF 外观绘制的窗口时,它将覆盖窗口任务栏。很好 - 当你需要它时,但当你确实希望任务栏最大化窗口覆盖它时。设置“总在最前面”属性没有任何区别。

是的,可以调整窗口大小,但必须知道任务栏的位置,或者屏幕的大小减去任务栏 - 知道该怎么做吗?

并且需要知道您正在没有任务栏的屏幕上最大化(如果这样做的话)。如果在多显示器虚拟桌面上......

任何想法:)

最佳答案

Yes one can resize a window BUT one has to know where the task bar is, or the size of the screen minus the taskbar - know how to do that?

是的:

1.查找您所在的图形设备(假设 p 是您要查找的屏幕的 Point):

GraphicsConfiguration graphicsConfiguration = null;
for (GraphicsDevice gd : GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()) {
if (gd.getDefaultConfiguration().getBounds().contains(p)) {
graphicsConfiguration = gd.getDefaultConfiguration();
break;
}
}

2.查看屏幕边界(注意多个屏幕的某些边界位置为负 - 例如,如果您有一个位于主屏幕左侧的辅助屏幕),屏幕尺寸和“Insets "通常是任务栏和/或其他图形工件的屏幕:

Rectangle screenBounds = graphicsConfiguration.getBounds();
Dimension screenSize = screenBounds.getSize();
Insets screenInsets = Toolkit.getDefaultToolkit()
.getScreenInsets(graphicsConfiguration);

关于Java - 如何避免用未修饰的或自定义的 LookAndFeel 窗口覆盖任务栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11211808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com