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

调用setResizable(false)仍无法阻止双击标题栏还原最大化JFrame

问题根因

setResizable(false)仅会禁用窗体边缘拖拽调整逻辑、灰化标题栏的还原/大小调整按钮,Windows平台原生标题栏的双击触发还原的逻辑是独立于Swing的resizable配置的,Java Swing默认不会拦截该原生事件,因此会出现双击标题栏触发还原的异常现象。

最优解决方案(兼容性最强,改造成本最低)

直接给JFrame添加窗体状态监听器,强制保持最大化状态,无论用户通过什么操作触发还原,都会自动拉回最大化状态,兼容Windows 10 + Java 11运行环境:

// 原有配置保留
this.setResizable(false);
this.setExtendedState(JFrame.MAXIMIZED_BOTH);

// 新增状态监听逻辑,放在setVisible(true)之前即可
this.addWindowStateListener(e -> {
    if ((e.getNewState() & JFrame.MAXIMIZED_BOTH) != JFrame.MAXIMIZED_BOTH) {
        this.setExtendedState(JFrame.MAXIMIZED_BOTH);
    }
});

该方案不会影响现有其他业务逻辑,不需要调整原有UI结构。

可选方案(彻底禁用双击标题栏能力)

如果本身有自定义标题栏样式的需求,也可以禁用系统原生标题栏,从根源上消除双击触发还原的入口:

// 禁用系统原生装饰
this.setUndecorated(true);
// 自行实现自定义标题栏UI,包含你需要的标题文本、最小化/关闭按钮、拖拽移动逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:57:00