You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过代码实现org.lwjgl.opengl.Display窗口最大化(非全屏)

LWJGL Display 非全屏最大化实现方案

要实现保留任务栏和窗口标题栏的非全屏最大化,不能直接使用Display.getDesktopDisplayMode()的高度(它包含了任务栏占用的空间),你需要获取系统工作区的尺寸——也就是桌面减去任务栏等系统UI后的可用区域。

LWJGL的Display类没有直接提供这个能力,需要借助Java AWT来获取系统工作区参数,具体步骤如下:

1. 获取系统工作区尺寸

使用AWT的GraphicsEnvironment和GraphicsDevice获取主屏幕的有效工作区域:

import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;

// 获取主屏幕的工作区边界(已扣除任务栏等系统UI)
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
Rectangle workArea = ge.getMaximumWindowBounds();

这里的workArea.width和workArea.height就是符合需求的窗口最大化尺寸。

2. 应用到LWJGL窗口

拿到尺寸后,配置Display并创建窗口:

// 先开启窗口可调整大小(确保手动调整和最大化按钮正常工作)
Display.setResizable(true);
// 设置为工作区尺寸
Display.setDisplayMode(new DisplayMode(workArea.width, workArea.height));
// 创建窗口
Display.create();

注意事项

  • AWT是JDK自带的类库,无需额外引入依赖
  • 多屏幕环境下,getMaximumWindowBounds()默认返回主屏幕的工作区,若要针对其他屏幕,可通过ge.getScreenDevices()遍历选择对应的GraphicsDevice,再调用其getDefaultConfiguration().getBounds()获取该屏幕的工作区

内容的提问来源于stack exchange,提问作者Sevoos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 14:30:16