Вы не устанавливаете якоря для mainContainer
или для детей.Таким образом, mainContainer
просто изменяется до его предпочтительного размера, а дочерние элементы изменяются до их предпочтительных размеров.prefHeight()
не назначает предпочтительную высоту, но вычисляет ее.
Присвоение предпочтительных размеров не требуется, хотя, если вы используете свойства привязки:
AnchorPane.setTopAnchor(mainContainer, 0d);
AnchorPane.setRightAnchor(mainContainer, 0d);
AnchorPane.setBottomAnchor(mainContainer, 0d);
AnchorPane.setLeftAnchor(mainContainer, 0d);
public void addScreen(String name, Node screen) {
screens.put(name, screen);
AnchorPane.setTopAnchor(screen, 0d);
AnchorPane.setRightAnchor(screen, 0d);
AnchorPane.setBottomAnchor(screen, 0d);
AnchorPane.setLeftAnchor(screen, 0d);
}
Использование StackPane
s вместо AnchorPane
s (и как корень сцены, и как супертип ScreensController
) будет намного проще, поскольку он изменяет размер дочерних элементов без необходимости указывать якоря.