Java获取MAXIMIZED状态窗口大小

Posted

技术标签:

【中文标题】Java获取MAXIMIZED状态窗口大小【英文标题】:Java get MAXIMIZED state window size 【发布时间】:2015-12-09 21:29:46 【问题描述】:

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

对于 WINDOWS 系统,我使用 Toolkit.getDefaultToolkit().getScreenSize() 方法来获得完整的 SCREEN SIZE 并且效果很好,但是对于 LINUX,由于 LINUX,我的屏幕有点宽和高酒吧。

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

【问题讨论】:

本网站采用问答形式。如果您已经解决了这个问题,并且之前没有在网站上提出过,请将问题表述为问题,然后在下面以正常方式回答。 @AdiBradfield 好的,下次我会考虑的:(谢谢你通知我... @AdiBradfield 完成... 【参考方案1】:

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

或者你可以做类似的事情

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 和宽度/高度)、设备的屏幕插图并更新屏幕边界以考虑任务栏和其他系统资源等内容。

您也可以简单地尝试使用 Frame#setExtendedState 之类的东西,这将允许您将窗口放入 Frame.MAXIMIZED_BOTH 并让它为您工作

【讨论】:

感谢有关此主题的所有帮助,但我的软件必须允许用户设置所需的窗口大小以及自动全屏,并允许他们决定是否有边框或无边框。很难找到我正在寻找的正确答案,我很高兴我已经找到了它。 ;)【参考方案2】:

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

【讨论】:

以上是关于Java获取MAXIMIZED状态窗口大小的主要内容,如果未能解决你的问题,请参考以下文章

Java Insets获取窗口的顶底左右的大小

Java AWT 图形界面编程Frame 窗口标题栏大小问题 ( Container 容器的空白边框 Insets | 通过调用 frame.getInsets().top 获取窗口标题栏高度 )

ExtJS:检查窗口状态(最小化,最大化等)

考试错题

C# WinForm如何获取窗口最大可实际显示的宽高? 比如1600*900的屏幕,最大化时窗口

c#winform太大安装到小屏幕电脑显示不全,怎么实现自动适应并显示所��