Панели компоновки

Типы панелей компоновки

Последнее обновление: 07.06.2018

Обычно все элементы управления, которые используются в приложении, помещаются в специальные контейнеры - панели компоновки (layout panes). Все панели встроенные компоновки наследуются от класса javafx.scene.layout.Pane, который, в свою очередь, наследуется от Region.

Панели компоновки LayoutPanes в JavaFX

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

  • AnchorPane: позволяет прижимать вложенные элементы управления к одной из сторон контейнера или размещать их по центру

  • BorderPane: поволяет упорядочить вложенные элементы управления относительно одной из сторон контейнера

  • FlowPane: размещает все вложенные элементы либо по горизонтали (если элементы не помещаются, то они переносятся на новую строку), либо по вертикали (если элементы не помещаются, то они переносятся в новый столбик)

  • GridPane: образует сетку из строк и столбцов и размещает вложенные элементы ячейках полученной таблицы

  • HBox: размещает все элементы в виде одной строки, то есть горизонтальный стек

  • VBox: размещает все элементы в виде одного столбца, то есть вертикальный стек

  • StackPane: располагает одни элементы поверх других

  • TilePane: размещает все вложенные элементы в виде тайлов

Поскольку все эти классы наследуются от класса Pane, то они все они имеют один важный метод - getChildren(), который возвращает коллекцию вложенных в контейнер элементов в виде объекта интерфейса ObservableList<Node>. Интерфейс ObservableList, в свою очередь, расширяет интерфейсы Collection<E>, Iterable<E>, List<E>, Observable.

Каждый вложенный элемент представляет объект Node. Используя методы ObservableList, мы можем добавлять узлы Node в эту коллекцию, а по сути в контейнер компоновки.

Например, возьмем простейшую панель компоновки - FlowPane и добавив в нее два элемента - Label и Button:

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Button;
import javafx.scene.layout.FlowPane;

public class Main extends Application{
	
	public static void main(String[] args) {
        
		Application.launch(args);
    }
	
	@Override
    public void start(Stage stage) {
		
		Label lbl = new Label("Hello");
		Button btn = new Button("Click");
		
		FlowPane root = new FlowPane();
		root.getChildren().addAll(lbl, btn);
		Scene scene = new Scene(root, 300, 200);
		stage.setScene(scene);
		
        stage.setTitle("Layout in JavaFX");
		
        stage.show();
	}
}
Добавление элементов в Pane в JavaFX

Подобным образом можно добавлять данные во все другие панели компоновки.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850