BorderPane

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

Контейнер javafx.scene.layout.BorderPane позволяет прижать вложенные элементы управления к одной из сторон контейнера: по верхнему, нижнему, левому или правому краю или расположить по центру.

BorderPane в JavaFX

Класс BorderPane имеет следующие конструкторы:

  • BorderPane(): создает пустой контейнер BorderPane

  • BorderPane​(Node center): создает контейнер BorderPane, в котором по центру располагается элемент center

  • BorderPane​(Node center, Node top, Node right, Node bottom, Node left): создает контейнер BorderPane, в котором по центру располагается элемент center, по верхнему краю - элемент top, по правому краю - элемент right, по нижнему краю - элемент bottom и по нижнему краю - узел left

Расположение элемента по центру:

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

public class Main extends Application{
	
	public static void main(String[] args) {
        
		Application.launch(args);
    }
	
	@Override
    public void start(Stage stage) {
		
		Button btn = new Button("Hello");
		BorderPane root = new BorderPane(btn);
		
		Scene scene = new Scene(root, 300, 150);
		stage.setScene(scene);
		
        stage.setTitle("BorderPane in JavaFX");
		
        stage.show();
	}
}
Центрирование в BorderPane in JavaFX

Некоторые из основных методов BorderPane:

  • Node getBottom​(): получает узел, который расположен по нижнему краю BorderPane

  • void setBottom​(Node child): располагает узел по нижнему краю

  • Node getCenter​(): получает узел, который расположен по центру

  • void setCenter(Node child): располагает узел по центру

  • Node getLeft(): получает узел, который расположен по левому краю

  • void setLeft​(Node child): располагает узел по левому краю

  • Node getRight(): получает узел, который расположен по правому краю

  • void setRight(Node child): располагает узел по правому краю

  • Node getTop(): получает узел, который расположен по верхнему краю

  • void setTop​(Node child): располагает узел по верхнему краю

  • static Pos getAlignment(Node child): получает параметры выравнивания элемента child в виде объекта Pos

  • static void setAlignment​(Node child, Pos value): задает выравнивание для элемента child

  • static void setMargin​(Node child, Insets value): устанавливает для элемента child внешние отступы от границ контейнера

  • static Insets getMargin​(Node child): получает внешние отступы элемента от границ контейнера

При размещении элементов, следует учитывать, что для каждого элемента задается по умолчанию определенное выравнивание:

  • top: Pos.TOP_LEFT

  • bottom: Pos.BOTTOM_LEFT

  • left: Pos.TOP_LEFT

  • right: Pos.TOP_RIGHT

  • center: Pos.CENTER

С помощью метода setAlignment мы можем переопределить выравнивание по умолчанию:

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

public class Main extends Application{
	
	public static void main(String[] args) {
        
		Application.launch(args);
    }
	
	@Override
    public void start(Stage stage) {
		
		Button left = new Button("Left");
		BorderPane.setAlignment(left, Pos.CENTER);
		
		Button right = new Button("Right");
		BorderPane.setAlignment(right, Pos.BOTTOM_LEFT);
		
		Button top = new Button("Top");
		BorderPane.setAlignment(top, Pos.CENTER);
		
		Button bottom = new Button("Bottom");
		BorderPane.setAlignment(bottom, Pos.CENTER);
		
		Button center = new Button("Center");
		BorderPane root = new BorderPane(center, top, right, bottom, left);
		
		Scene scene = new Scene(root, 300, 150);
		stage.setScene(scene);
		
        stage.setTitle("BorderPane in JavaFX");
		
        stage.show();
	}
}

В данном случае выравнивание все элементов идет по центру исходя из того, к какой стороне контейнера они примыкают:

Alignment in BorderPane in JavaFX

Благодаря методам BorderPane нам необязательно определять элементы для центра, или для каждой из сторон. Мы можем установить элементы только для тех сторон, которые действительно необходимы:

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

public class Main extends Application{
	
	public static void main(String[] args) {
        
		Application.launch(args);
    }
	
	@Override
    public void start(Stage stage) {
	
		BorderPane root = new BorderPane();
		
		Button top = new Button("Top");
		BorderPane.setAlignment(top, Pos.CENTER);
		root.setTop(top);
		
		Button center = new Button("Center");
		root.setCenter(center);
		
		Scene scene = new Scene(root, 300, 150);
		stage.setScene(scene);
		
        stage.setTitle("BorderPane in JavaFX");
		
        stage.show();
	}
}
Позиционирование в BorderPane в JavaFX
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850