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 представляет макет панели потока. |