Java 获得最大化状态 window 大小

Java get MAXIMIZED state window size

我正在开发一款多平台游戏,我想制作一款全屏无边框游戏 window,这就是我遇到 LINUX 操作系统问题的地方。

对于 WINDOWS 系统,我使用 Toolkit.getDefaultToolkit().getScreenSize() 方法来获得完整的屏幕尺寸并且它工作正常,但是对于 LINUX 由于 LINUX 条,我的屏幕有点宽和高。

*我下面的回答中的解决方案

你可以看看Full-Screen Exclusive Mode API。这将使您的程序可以完全访问整个屏幕,无需担心 task/dock 条等

或者你可以做类似的事情

GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
Rectangle bounds = gd.getDefaultConfiguration().getBounds();
Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(gd.getDefaultConfiguration());

Rectangle safeBounds = new Rectangle(bounds);
safeBounds.x += insets.left;
safeBounds.y += insets.top;
safeBounds.width -= (insets.left + insets.right);
safeBounds.height -= (insets.top + insets.bottom);

基本上所有这一切都是获取屏幕边界(x/y 和 width/height),设备的屏幕插入并更新屏幕边界以考虑任务栏和其他系统资源。

您也可以简单地尝试使用 Frame#setExtendedState 之类的东西,这样您就可以将 window 放入 Frame.MAXIMIZED_BOTH 并让它为您完成工作

*解决方案
在浏览互联网数小时后,我已经找到了在 window 处于最大化状态时获取其大小的解决方案(就像您在框架上按最大化正方形)并为您提供 window 支付的最大允许大小注意所有操作系统栏。 这是方法:GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds()