Это зависит от родительского макета. Нет общего способа сделать это для каждого возможного макета.
Для VBox
вы должны использовать VBox.vgrow
(значение Priority.SOMETIMES
для всех детей) и VBox
, fillWidth
, но вы не можете достичь этого для Pane
, для AnchorPane
это будет потребуйте, чтобы вы установили привязки, для GridPane
ограничений столбца / строки с помощью percentWidth
/ percentHeight
или можно использовать приоритеты роста ...
Пример для VBox
/ HBox
<VBox prefHeight="400.0" prefWidth="600.0">
<children>
<HBox style="-fx-background-color: green;" VBox.vgrow="SOMETIMES" />
<HBox style="-fx-background-color: blue;" VBox.vgrow="SOMETIMES" />
<HBox style="-fx-background-color: red;" VBox.vgrow="SOMETIMES" />
</children>
</VBox>
Альтернативный способ создания привязок
Вы можете использовать привязку выражений для создания некоторых привязок. Смотри https://docs.oracle.com/javase/10/docs/api/javafx/fxml/doc-files/introduction_to_fxml.html#expression_binding
<VBox fx:id="vbox" fillWidth="false" prefHeight="400.0" prefWidth="600.0">
<children>
<HBox prefHeight="100.0" style="-fx-background-color: green;" VBox.vgrow="SOMETIMES" prefWidth="${vbox.width * 0.5}" />
<HBox prefHeight="100.0" style="-fx-background-color: blue;" VBox.vgrow="SOMETIMES" prefWidth="${vbox.width * 0.5}" />
<HBox prefHeight="100.0" style="-fx-background-color: red;" VBox.vgrow="SOMETIMES" prefWidth="${vbox.width * 0.5}" />
</children>
</VBox>
Обратите внимание, что SceneBuilder будет отображать предупреждения и неправильно отображать предварительный просмотр, если вы используете этот подход.