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()
我正在开发一款多平台游戏,我想制作一款全屏无边框游戏 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()