AnchorPane

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

javafx.scene.layout.AnchorPane позволяет позиционировать вложеные элементы вдоль одной из сторон контейнера.

AnchorPane имеет два конструктора:

  • AnchorPane(): создает пустой объект AnchorPane

  • AnchorPane(Node... children): создает объект AnchorPane, заполненный узлами children

При использовании второго конструкора или при обычном добавлении узлов AnchorPane следует учитывать, что все добавленные узлы по умолчанию будут располагать в левом верхнем углу. И чтобы наспроить расположение, мы можем использовать один из статических методов AnchorPane. Основные методы класса:

  • static Double getBottomAnchor​(Node child): возвращает положение узла child относительно нижнего края контейнера

  • static Double getLeftAnchor​(Node child): возвращает положение узла child относительно левого края контейнера

  • static Double getRightAnchor​(Node child): возвращает положение узла child относительно правого края контейнера

  • static Double getTopAnchor​(Node child): возвращает положение узла child относительно верхнего края

  • static void setBottomAnchor​(Node child, Double value): устанавливает отступ value для узла child относительно нижнего края контейнера

  • static void setLeftAnchor​(Node child, Double value): устанавливает отступ value для узла child относительно левого края контейнера

  • static void setRightAnchor(Node child, Double value): устанавливает отступ value для узла child относительно правого края контейнера

  • static void setTopAnchor​(Node child, Double value): устанавливает отступ value для узла child относительно верхнего края контейнера

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

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

public class Main extends Application{
	
	public static void main(String[] args) {
        
		Application.launch(args);
    }
	
	@Override
    public void start(Stage stage) {
		
		Button topBtn = new Button("Top");
		AnchorPane.setTopAnchor(topBtn, 10.0);
		AnchorPane.setLeftAnchor(topBtn, 60.0);
		AnchorPane.setRightAnchor(topBtn, 60.0);
	 
		Button bottomBtn = new Button("Bottom");
		AnchorPane.setBottomAnchor(bottomBtn, 10.0);
		AnchorPane.setLeftAnchor(bottomBtn, 60.0);
		AnchorPane.setRightAnchor(bottomBtn, 60.0);
		
		Button leftBtn = new Button("Left");
		AnchorPane.setTopAnchor(leftBtn, 30.0);
		AnchorPane.setLeftAnchor(leftBtn, 15.0);
		AnchorPane.setBottomAnchor(leftBtn, 30.0);
		
		Button rightBtn = new Button("Right");
		AnchorPane.setTopAnchor(rightBtn, 30.0);
		AnchorPane.setRightAnchor(rightBtn, 10.0);
		AnchorPane.setBottomAnchor(rightBtn, 30.0);
		
		AnchorPane root = new AnchorPane(topBtn, rightBtn, bottomBtn, leftBtn);
		
		Scene scene = new Scene(root, 300, 200);
		stage.setScene(scene);
		
        stage.setTitle("AnchorPane in JavaFX");
		
        stage.show();
	}
}
Панель компоновки AnchorPane в JavaFX

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

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