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

pet*_*erk 1 java swing look-and-feel

是的一些问题接近:)

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

也就是说,当你最大化一个"未修饰"的窗口,或者一个带有PLAF外观和感觉的窗口时,它将覆盖windows任务栏.很好 - 当你想要它时,你需要它,但当你想要任务栏最大化的窗口覆盖它时.设置"永远在最顶层"的权利没有任何区别.

是的,可以调整窗口大小但是必须知道任务栏的位置,或者屏幕大小减去任务栏 - 知道如何做到这一点?

并且如果要完成,则需要知道您在没有任务栏的屏幕上最大化.如果在多监视器虚拟桌面上......

有任何想法吗 :)

Gui*_*let 5

是的,可以调整窗口大小但是必须知道任务栏的位置,或者屏幕大小减去任务栏 - 知道如何做到这一点?

是:

1.找到你所在的图形设备(假设p是Point你正在寻找的屏幕):

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

2.查看屏幕边界(注意某些边界位置在多个屏幕上是否定的 - 例如,如果您的主屏幕左侧有辅助屏幕),屏幕大小和"插入"的屏幕通常是任务栏和/或其他图形工件:

Rectangle screenBounds = graphicsConfiguration.getBounds();
Dimension screenSize = screenBounds.getSize();
Insets screenInsets = Toolkit.getDefaultToolkit()
     .getScreenInsets(graphicsConfiguration);
Run Code Online (Sandbox Code Playgroud)