Руководство JavaFX BorderPane Layout

1- BorderPane Layout

BorderPane это контейнер (container), который разделен на 5 отдельных областей, каждая область может содержать подкомпонент.
  • Область Top/Bottom: Может сократить/расстянуть по горизонтали и не менять высоту.
  • Область Left/Right: Может сократить/расстянуть по вертикали и не менять длину.
  • Область Center: Может сократить/расстянуть в оба направления
Свойства областей изображены в иллюстрации ниже:
Если определенная область не содержит подкомпонент, другие области будут занимать ее пространство.
Например: область  TOP не имеет подкомпонент, ее пространство будет занято другими компонентами:
Например: Области  TOP & RIGHT не имеют подкомпонентов, их пространства будут заняты другими областями.
Заметка: В  JavaFX, подкомпоненты лежат в определенной области BorderPane могут не занимать полностью пространство той области, например если Button лежит и в одной из области BorderPane по умолчанию, он не заполнит всю эту область.
Но если  VBox или  HBox лежат в одной из областей  BorderPane, по умолчанию он заполнит эту область.

2- Пример с BorderPane

BorderPaneDemo.java
package org.o7planning.javafx.borderpane;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class BorderPaneDemo extends Application {

  @Override
  public void start(Stage primaryStage) throws Exception {
      BorderPane root = new BorderPane();

      root.setPadding(new Insets(15, 20, 10, 10));

      // TOP
      Button btnTop = new Button("Top");
      btnTop.setPadding(new Insets(10, 10, 10, 10));
      root.setTop(btnTop);
      // Set margin for top area.
      BorderPane.setMargin(btnTop, new Insets(10, 10, 10, 10));
     

      // LEFT
      Button btnLeft = new Button("Left");
      btnLeft.setPadding(new Insets(5, 5, 5, 5));
      root.setLeft(btnLeft);
      // Set margin for left area.
      BorderPane.setMargin(btnLeft, new Insets(10, 10, 10, 10));

      // CENTER
      Button btnCenter = new Button("Center");
      btnCenter.setPadding(new Insets(5, 5, 5, 5));
      root.setCenter(btnCenter);
       // Alignment.
       BorderPane.setAlignment(btnCenter, Pos.BOTTOM_CENTER);

      // RIGHT
      Button btnRight = new Button("Right");
      btnRight.setPadding(new Insets(5, 5, 5, 5));
      root.setRight(btnRight);
      // Set margin for right area.
      BorderPane.setMargin(btnRight, new Insets(10, 10, 10, 10));

      // BOTTOM
      Button btnBottom = new Button("Bottom");
      btnBottom.setPadding(new Insets(5, 5, 5, 5));
      root.setBottom(btnBottom);
      // Alignment.
      BorderPane.setAlignment(btnBottom, Pos.TOP_RIGHT);

      // Set margin for bottom area.
      BorderPane.setMargin(btnBottom, new Insets(10, 10, 10, 10));

      Scene scene = new Scene(root, 550, 250);

      primaryStage.setTitle("BorderPane Layout Demo");
      primaryStage.setScene(scene);
      primaryStage.show();
  }

  public static void main(String[] args) {
      launch(args);
  }

}
Запуск примера:

3- Дизайн BorderPanel с Scene Builder

  • File/New/Other...
Добавить подкомпоненты в  BorderPane:

Margin:

С BorderPane вы можете настроить  Margin для каждого подкомпонента:

Выравнивание (Alignment)