JavaFX中如何禁用窗口调整大小但保留最大化按钮?
解决JavaFX禁用手动调整大小但保留最大化按钮的问题
嘿,我懂你想要的效果——窗口不能手动拖动边框调整大小,但保留最大化按钮方便全屏展示,对吧?直接用stage.setResizable(false)确实会把最大化按钮一起禁用,这可不是你想要的结果,不过有个简单的小技巧能实现你的需求。
核心思路
我们可以允许窗口调整大小,但将它的最小尺寸和最大尺寸设置为同一个固定值。这样一来,用户拖动窗口边框时,尺寸不会有任何变化(相当于禁用了手动调整),但最大化按钮依然能正常工作,点击后窗口会全屏,恢复时也会回到你设置的固定尺寸。
代码实现示例
// 先设置你想要的窗口固定初始尺寸 stage.setWidth(800); stage.setHeight(600); // 锁定宽度:最小宽度和最大宽度设为同一个值 stage.setMinWidth(stage.getWidth()); stage.setMaxWidth(stage.getWidth()); // 锁定高度:最小高度和最大高度设为同一个值 stage.setMinHeight(stage.getHeight()); stage.setMaxHeight(stage.getHeight()); // 保持resizable为true,确保最大化按钮不会被隐藏 stage.setResizable(true);
补充说明
- 如果你的窗口尺寸是在FXML文件中定义的,也可以直接在FXML里设置
minWidth、maxWidth、minHeight、maxHeight属性,效果完全一致。 - 当你从最大化状态恢复窗口时,它会自动回到你设置的固定尺寸,体验和预期完全吻合。
内容的提问来源于stack exchange,提问作者Layynezz
相关产品推荐
相关产品推荐

