JavaFX - панели макета (контейнеры)

После создания всех необходимых узлов сцены мы обычно располагаем их по порядку.

Такое расположение компонентов в контейнере называется компоновкой контейнера. Мы также можем сказать, что мы следовали макету, поскольку он включает размещение всех компонентов в определенной позиции внутри контейнера.

JavaFX предоставляет несколько предопределенных макетов, таких как HBox, VBox, Border Pane, Stack Pane, Text Flow, Anchor Pane, Title Pane, Grid Pane, Flow Panel, и т.д.

Каждый из вышеупомянутых макетов представлен классом, и все эти классы принадлежат пакету javafx.layout. Класс с именемPane является базовым классом всех макетов в JavaFX.

Создание макета

Чтобы создать макет, вам необходимо -

  • Создать узел.
  • Создайте экземпляр соответствующего класса требуемого макета.
  • Задайте свойства макета.
  • Добавьте все созданные узлы в макет.

Создание узлов

Прежде всего, создайте необходимые узлы приложения JavaFX, создав экземпляры их соответствующих классов.

Например, если вы хотите иметь текстовое поле и две кнопки, а именно воспроизведение и остановку в макете HBox, вам нужно будет изначально создать эти узлы, как показано в следующем блоке кода -

//Creating a text field 
TextField textField = new TextField();       

//Creating the play button 
Button playButton = new Button("Play");       

//Creating the stop button 
Button stopButton = new Button("stop");

Создание соответствующего класса

После создания узлов (и выполнения всех операций с ними) создайте экземпляр класса требуемого макета.

Например, если вы хотите создать макет Hbox, вам необходимо создать экземпляр этого класса следующим образом.

HBox hbox = new HBox();

Настройка свойств макета

После создания экземпляра класса вам необходимо установить свойства макета, используя соответствующие методы установки.

Например - если вы хотите установить расстояние между созданными узлами в макете HBox, вам необходимо установить значение для свойства с именем spacing. Это можно сделать с помощью метода установкиsetSpacing() как показано ниже -

hbox.setSpacing(10);

Добавление объекта формы в группу

Наконец, вам нужно добавить объект формы в группу, передав его в качестве параметра конструктора, как показано ниже.

//Creating a Group object  
Group root = new Group(line);

Панели макета

Ниже приведены различные панели (классы) макета, предоставляемые JavaFX. Эти классы существуют в пакетеjavafx.scene.layout.

S.No Форма и описание
1 HBox

Макет HBox размещает все узлы в нашем приложении в одну горизонтальную строку.

Класс с именем HBox пакета javafx.scene.layout представляет макет текстового горизонтального поля.

2 VBox

Макет VBox размещает все узлы в нашем приложении в одном вертикальном столбце.

Класс с именем VBox пакета javafx.scene.layout представляет текстовый макет вертикального поля.

3 BorderPane

Компоновка Border Pane размещает узлы в нашем приложении в верхнем, левом, правом, нижнем и центральном положениях.

Класс с именем BorderPane пакета javafx.scene.layout представляет макет панели границы.

4 StackPane

Компоновка панели стека размещает узлы в нашем приложении поверх других, как в стеке. Первый добавленный узел помещается внизу стека, а следующий узел помещается поверх него.

Класс с именем StackPane пакета javafx.scene.layout представляет макет панели стека.

5 TextFlow

Макет Text Flow упорядочивает несколько текстовых узлов в одном потоке.

Класс с именем TextFlow пакета javafx.scene.layout представляет макет потока текста.

6 AnchorPane

Макет панели привязки закрепляет узлы в нашем приложении на определенном расстоянии от панели.

Класс с именем AnchorPane пакета javafx.scene.layout представляет макет панели привязки.

7 TilePane

Макет Tile Pane добавляет все узлы нашего приложения в виде плиток одинакового размера.

Класс с именем TilePane пакета javafx.scene.layout представляет макет TilePane.

8 GridPane

Макет панели сетки упорядочивает узлы в нашем приложении в виде сетки строк и столбцов. Этот макет удобен при создании форм с использованием JavaFX.

Класс с именем GridPane пакета javafx.scene.layout представляет макет GridPane.

9 FlowPane

Компоновка панели потока охватывает все узлы в потоке. Панель горизонтального потока оборачивает элементы панели по высоте, а панель вертикального потока оборачивает элементы по своей ширине.

Класс с именем FlowPane пакета javafx.scene.layout представляет макет панели потока.