如何在fxml中设置容器的最小尺寸

How to set minimum size of container in fxml

我正在尝试使用 javafx,我已经为我的界面创建了一个 fxml。

但是现在,我的窗格大小有问题。

<VBox minHeight="200.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">

例如,在我的 VBox 及其子项中,我指定了一个 minHeight。但是当应用程序是 运行 时,我可以使我的盒子小于 200p,但我不明白为什么。如何正确设置最小高度或最小高度?

谢谢

对于 JavaFX 中的所有内容,最小大小都将按预期工作 除了 当您将可调整大小的窗格作为场景的根时(这可能是您的情况)。

当封闭阶段调整大小时,您希望根据最小大小使根不变小,您可以尝试以下方法之一:

一个。设置舞台的最小尺寸

stage.setMinWidth(200);
stage.setMinHeight(200);

如有必要,您可以根据舞台装饰品的大小调整最小高度和宽度值。

乙。将 ScrollPane 定义为场景的根

ScrollPane scrollPane = new ScrollPane(content);
scrollPane.setMinViewportWidth(200);
scrollPane.setMinViewportHeight(200);
Scene scene = new Scene(scrollPane);

旁白:

可以说,不根据场景根的最小尺寸强制执行舞台最小尺寸的行为是 "wrong"。也许约束可以由桌面系统上的 JavaFX 系统强制执行,但是以直观的方式执行此操作非常困难,因为通常人们不希望包含 windows 具有最小大小。在移动开发中,主要阶段通常会全屏呈现给设备。这使得基于场景根最小尺寸的受限舞台尺寸很难实现,因为场景根的尺寸实际上受 OS 限制和偏好控制,此外还有用户操作,例如调整主应用程序的大小 window。