Из layout manual:
приложение JavaFX вручную раскладывать интерфейс с помощью устанавливая свойства позиции и размера для каждого элемента пользовательского интерфейса. Однако более простой вариант - использовать панели макета. JavaFX SDK предоставляет несколько макетов для простой настройки и управления классическими макетами, такими как строки, столбцы, стопки, плитки и другие. По мере изменения размера окна панель макета автоматически репозиционирует и изменяет размеры узлов, которые она содержит в соответствии со свойствами для узлов.
В javaFX есть 6 панелей, таких как: BorderPane, StackPane, GridPane, FlowPane, TilePane и AnchorPane.
StackPane
Stack панель позволяет разместить много узлов один поверх другого.
StackPane root = new StackPane();
Button btn1 = new Button(" 1 ");
Button btn2 = new Button("22222222");
root.getChildren().addAll(btn2, btn1);
root.setStyle("-fx-background-color: #87CEFA;");
GridPane
GridPane позволяет создать гибкую сетку из строк и столбцов, и положение каждого узла в точном месте.
GridPane grid = new GridPane();
grid.setPadding(new Insets(10, 10, 10, 10));
grid.setMinSize(300, 300);
grid.setVgap(5);
grid.setHgap(5);
Text username = new Text("Username:");
grid.add(username, 0, 0);
TextField text = new TextField();
text.setPrefColumnCount(10);
grid.add(text, 1, 0);
Text password = new Text("Password:");
grid.add(password, 0, 1);
TextField text2 = new TextField();
text2.setPrefColumnCount(10);
grid.add(text2, 1, 1);
grid.setStyle("-fx-background-color: #D8BFD8");
FlowPane
потока Панель устанавливает все узлы один после другого в том порядке, они были добавлены.
FlowPane flow = new FlowPane();
flow.setPadding(new Insets(10, 10, 10, 10));
flow.setStyle("-fx-background-color: DAE6F3;");
flow.setHgap(5);
flow.getChildren().addAll(left, center);
TilePane
TilePane аналогична панели потока. Все узлы помещаются в сетку в том же порядке, в каком они были добавлены.
TilePane tile = new TilePane();
tile.setPadding(new Insets(10, 10, 10, 10));
tile.setPrefColumns(2);
tile.setStyle("-fx-background-color: #CD5C5C;");
HBox hbox2 = new HBox(8); // spacing = 8
hbox2.getChildren().addAll(top, left, center);
tile.getChildren().add(hbox2);
AnchorPane
AnchorPane позволяет узлам позиции в верхней, нижней, левой, правой или центральной части панели.
AnchorPane anchorpane = new AnchorPane();
Button buttonSave = new Button("Save");
Button buttonCancel = new Button("Cancel");
anchorpane.setStyle("-fx-background-color: #A9A9A9;");
HBox hb = new HBox();
hb.getChildren().addAll(buttonSave, buttonCancel);
anchorpane.getChildren().addAll(hb);
anchorpane.setMinSize(300, 100);
AnchorPane.setRightAnchor(hb, 10.0);
BorderPane
BorderPane делит сцену в пяти регионах, таких как: сверху, снизу, слева, справа, и в центре. Где вы можете настроить добавленные узлы. BorderPane также позволяет добавлять разные области в каждом регионе, как показано в моем примере. Однако вы не можете использовать одну и ту же панель более одного раза.
BorderPane pane = new BorderPane();
pane.setLeft(anchorpane);
pane.setCenter(root);
pane.setRight(grid);
pane.setTop(flow);
pane.setBottom(tile);
Scene scene = new Scene(pane, 300, 250);
Символ 'Pane' является элементом пользовательского интерфейса («узел»), который содержит другие элементы пользовательского интерфейса («дочерние узлы») и управляет расположением этих узлов в пределах 'Pane'. Существует несколько предопределенных типов «Панели» (подклассы «Панели»), которые отличаются тем, как они выкладывают свои дочерние узлы. –