Проблема в том, что вы добавляете контент, загруженный из fxml, в Pane
, который не выполняет никакого позиционирования или изменения размера, кроме изменения размера контента до его предпочтительного размера.
Замена displayPane
в дочернем списке родительского макета позволит VBox
изменить размер / положение.
В этом случае гораздо проще использовать другой макет: BorderPane
Этот макет позволяет легко заменить узел, например displayPane
, а также изменить размер узла, который занимает его место автоматически:
<BorderPane fx:id="container" prefHeight="455.0" prefWidth="753.0" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="HomePage">
<top>
<MenuBar>
...
</MenuBar>
</top>
<center>
<Pane fx:id="displayPane" prefHeight="200.0" prefWidth="200.0" />
</center>
</BorderPane>
@FXML
private BorderPane container;
@FXML private void savingsCreateDeleteAccountOnAction() throws Exception {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("savingsCreateDeleteAccount.fxml"));
Pane tempPane = fxmlLoader.load();
container.setCenter(tempPane);
}
Примечание: Использование статических свойств макетов, которые не являются родительскими для узла, бессмысленно.Например, родительский элемент displayPane
является VBox
, поэтому
AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"
не оказывает никакого влияния.
Также вручную устанавливается layoutX
/ layoutY
, если родительский макет делаетпозиционирование бессмысленно.Эти свойства вашего VBox
просто перезаписываются родительским AnchorPane
во время первого прохода макета, никак не влияя на макет.