После построения всех необходимых узлов в сцене мы, как правило, расположим их по порядку.
Такое расположение компонентов в контейнере называется компоновкой контейнера. Можно также сказать, что мы следовали макету, поскольку он включает в себя размещение всех компонентов в определенной позиции в контейнере.
JavaFX предоставляет несколько предопределенных макетов, таких как HBox, VBox, Border Pane, Stack Pane, Text Flow, Anchor Pane, Title Title, 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);
Добавление объекта Shape в группу
Наконец, вам нужно добавить объект формы в группу, передав его в качестве параметра конструктора, как показано ниже.
//Creating a Group object Group root = new Group(line);
Макет панели
Ниже приведены различные панели (классы) Layout, предоставляемые JavaFX. Эти классы существуют в пакете javafx.scene.layout .
Макет HBox размещает все узлы в нашем приложении в один горизонтальный ряд.
Класс с именем HBox пакета javafx.scene.layout представляет макет горизонтального текстового поля.
Макет VBox размещает все узлы в нашем приложении в один вертикальный столбец.
Класс с именем VBox пакета javafx.scene.layout представляет текстовое расположение вертикального поля.
Компоновка Border Pane размещает узлы в нашем приложении сверху, слева, справа, снизу и по центру.
Класс с именем BorderPane пакета javafx.scene.layout представляет макет панели границ.
Компоновка панели стека размещает узлы в нашем приложении поверх другого, как в стеке. Узел, добавленный первым, помещается внизу стека, а следующий узел помещается поверх него.
Класс с именем StackPane пакета javafx.scene.layout представляет макет панели стека.
Компоновка Text Flow размещает несколько текстовых узлов в одном потоке.
Класс с именем TextFlow пакета javafx.scene.layout представляет макет текстового потока.
Компоновка Anchor pane привязывает узлы в нашем приложении на определенном расстоянии от панели.
Класс с именем AnchorPane пакета javafx.scene.layout представляет макет панели привязки .
Компоновка панели плиток добавляет все узлы нашего приложения в виде плиток одинакового размера.
Класс с именем TilePane пакета javafx.scene.layout представляет макет TilePane.
Компоновка Grid Pane организует узлы в нашем приложении в виде сетки строк и столбцов. Этот макет удобен при создании форм с использованием JavaFX.
Класс с именем GridPane пакета javafx.scene.layout представляет макет GridPane.
Компоновка панели потока охватывает все узлы в потоке. Панель горизонтального потока охватывает элементы панели на ее высоте, а панель вертикального потока — элементы на ее ширине.
Класс с именем FlowPane пакета javafx.scene.layout представляет макет панели потока.