如何限制用户可以调整 JavaFX window 的大小?

How to limit how much the user can resize a JavaFX window?

我正在寻找方法来限制用户可以调整我的应用程序主要 window 大小的程度,同时又不妨碍完全调整大小。具体来说,我想为 window 设置最小宽度和高度,你会认为 minWidthminHeight 会实现这一点,但显然它们不会。

我的 window 的根元素(在 fxml 中声明)如下所示:

<VBox xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml"
      fx:controller="com.my.module.FXMLController"
      minWidth="400.0">
    <!-- ... -->
</VBox>

但是 minWidth 似乎所做的只是设置 window 的初始大小。如果我尝试以用户身份调整 window 的大小,我可以将其调整为与标题栏装饰一样小,这并不理想。

执行此操作的正确方法是什么?是否有一种声明方式,而不是在用户调整 "illegally" 大小后强行恢复 window 的状态?此外,如果可能的话,我想通过 FXML 文档而不是代码来完成此操作。

对于上下文,这是 JVM 12 上的 JavaFX 12,我在 Windows 10.
我在 SO 上发现了另一个类似的问题,但它没有答案而且相当陈旧。

舞台有宽度和高度 属性,您可以使用 Stage.setMinWidth() 和 .setMinHeight()。

你也可以像这样监听resize事件,

mainStage.widthProperty().addListener((o, oldValue, newValue)->{
    if(newValue.intValue() < 400.0) {
        mainStage.setResizable(false);
        mainStage.setWidth(400);
        mainStage.setResizable(true);
    }
});