如何限制用户可以调整 JavaFX window 的大小?
How to limit how much the user can resize a JavaFX window?
我正在寻找方法来限制用户可以调整我的应用程序主要 window 大小的程度,同时又不妨碍完全调整大小。具体来说,我想为 window 设置最小宽度和高度,你会认为 minWidth
和 minHeight
会实现这一点,但显然它们不会。
我的 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);
}
});
我正在寻找方法来限制用户可以调整我的应用程序主要 window 大小的程度,同时又不妨碍完全调整大小。具体来说,我想为 window 设置最小宽度和高度,你会认为 minWidth
和 minHeight
会实现这一点,但显然它们不会。
我的 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);
}
});