FlowPane

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

FlowPane располагает вложенные элементы друг за другом. Если они не помещаются в один ряд, то они переносятся на следующий ряд.

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

Для создания FlowPane можно использовать один из конструкторов класса:

  • FlowPane(): определяет горизонтальный ряд элементов

  • FlowPane​(double hgap, double vgap): определяет горизонтальный ряд элементов, для каждого элемента определяется отступ по вертикали vgap и отступ по горизонтали hgap. В предыдущем конструкторе по умолчанию отступы имеют значение 0

  • FlowPane​(double hgap, double vgap, Node... children): определяет отступы, а последний параметр определяет набор вложенных элементов

  • FlowPane​(Orientation orientation): позволяет задать направление контейнера: по-горизонтали или по-вертикали

  • FlowPane​(Orientation orientation, double hgap, double vgap): задает направление элементов и их отступы

  • FlowPane​(Orientation orientation, double hgap, double vgap, Node... children): задает направление элементов, их отступы, а также сами помещаемые в контейнер элементы

  • FlowPane​(Orientation orientation, Node... children): определяет направление элементов и сами элементы

  • FlowPane​(Node... children): определяет вложенные элементы

Используем FlowPane для компоновки элементов Label:

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Label;
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 label1 = new Label("Label1");
		Label label2 = new Label("Label2");
		Label label3 = new Label("Label3");
		Label label4 = new Label("Label4");
		Label label5 = new Label("Label5");
		Label label6 = new Label("Label6");
		Label label7 = new Label("Label7");
		Label label8 = new Label("Label8");
		Label label9 = new Label("Label9");
		
		FlowPane root = new FlowPane(10, 10, label1, label2, label3, label4, label5, label6, label7, label8, label9);
		//root.getChildren().addAll(label1, label2, label3, label4, label5, label6, label7, label8, label9);
		Scene scene = new Scene(root);
		stage.setScene(scene);
		
        stage.setTitle("FlowPane in JavaFX");
		stage.setWidth(300);
		stage.setHeight(200);
		
        stage.show();
	}
}

По умолчанию элементы (в данном случае 9 меток Label) размещаются по горизонтали. Отступы между элементами как по горизонтали, так и по вертикали составляют 10 единиц.

FlowPane in JavaFX

Чтобы задать вертикальное направление элементов, необходимо использовать значение Orientation.VERTICAL:

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

public class Main extends Application{
	
	public static void main(String[] args) {
        
		Application.launch(args);
    }
	
	@Override
    public void start(Stage stage) {
		
		Label label1 = new Label("Label1");
		Label label2 = new Label("Label2");
		Label label3 = new Label("Label3");
		Label label4 = new Label("Label4");
		Label label5 = new Label("Label5");
		Label label6 = new Label("Label6");
		Label label7 = new Label("Label7");
		Label label8 = new Label("Label8");
		Label label9 = new Label("Label9");
		
		FlowPane root = new FlowPane(Orientation.VERTICAL, 10, 10, label1, label2, label3, label4, 
									label5, label6, label7, label8, label9);
		Scene scene = new Scene(root);
		stage.setScene(scene);
		
        stage.setTitle("FlowPane in JavaFX");
		stage.setWidth(300);
		stage.setHeight(200);
		
        stage.show();
	}
}
Вертикальная ориентация FlowPane в JavaFX

Методы FlowPane

Для управления FlowPane можно применять его методы, некоторые из них:

  • getAlignment(): получает выравнивание внутри FlowPane в виде объекта Pos

  • setAlignment​(Pos value): задает выравнивание

  • setColumnHalignment​(HPos value): задает горизонтальное выравнивание элементов при вертикальной ориентации FlowPane

  • getColumnHalignment(): получает значение горизонтального выравнивания

  • setRowValignment​(VPos value): устанавливает вертикальное выравнивание элементов при горизонтальное ориентации FlowPane

  • getRowValignment(): получает значение вертикального выравнивания

  • setHgap​(double value): устанавливает отступы между элементами по горизонтали

  • getHgap(): получает отступы между элементами по горизонтали

  • setVgap​(double value): устанавливает отступы между элементами по вертикали

  • getVgap(): получает отступы между элементами по вертикали

  • setOrientation​(Orientation value): устанавливает направление элементов

  • getOrientation(): получает направление элементов в виде объекта Orientation

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

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

Применим некоторые из этих методов:

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

public class Main extends Application{
	
	public static void main(String[] args) {
        
		Application.launch(args);
    }
	
	@Override
    public void start(Stage stage) {
		
		Label label1 = new Label("Label1");
		Label label2 = new Label("Label2");
		Label label3 = new Label("Label3");
		Label label4 = new Label("Label4");
		Label label5 = new Label("Label5");
		Label label6 = new Label("Label6");
		Label label7 = new Label("Label7");
		Label label8 = new Label("Label8");
		Label label9 = new Label("Label9");
		
		FlowPane root = new FlowPane();
		root.setVgap(8);
		root.setHgap(15);
		root.setOrientation(Orientation.VERTICAL);
		root.getChildren().addAll(label1, label2, label3, label4, label5, label6, label7, label8, label9);
		Scene scene = new Scene(root, 300, 150);
		stage.setScene(scene);
		
        stage.setTitle("FlowPane in JavaFX");
		
        stage.show();
	}
}

Ряд методов управляет выравниванием. Так, метод setAlignment​() устанавливает выравнивание элементов с помощью объекта javafx.geometry.Pos. Этот класс определяет ряд констант для установки выравнивания:

  • BASELINE_CENTER: выравнивание по базовой линии по вертикали и по центру по горизонтали

  • BASELINE_LEFT: выравнивание по базовой линии по вертикали и по левому краю по горизонтали

  • BASELINE_RIGHT: выравнивание по базовой линии по вертикали и по правому краю по горизонтали

  • BOTTOM_CENTER: выравнивание по нижнему краю по вертикали и по центру по горизонтали

  • BOTTOM_LEFT: выравнивание по нижнему краю по вертикали и по левому краю по горизонтали

  • BOTTOM_RIGHT: выравнивание по нижнему краю по вертикали и по правому краю по горизонтали

  • CENTER: выравнивание по центру как по вертикали, так и по горизонтали

  • CENTER_LEFT: выравнивание по центру по вертикали и по левому краю по горизонтали

  • CENTER_RIGHT: выравнивание по центру по вертикали и по правому краю по горизонтали

  • TOP_CENTER: выравнивание по верхнему краю по вертикали и по центру по горизонтали

  • TOP_LEFT: выравнивание по верхнему краю по вертикали и по левому краю по горизонтали (значение по умолчанию)

  • TOP_RIGHT: выравнивание по верхнему краю по вертикали и по правому краю по горизонтали

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

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

public class Main extends Application{
	
	public static void main(String[] args) {
        
		Application.launch(args);
    }
	
	@Override
    public void start(Stage stage) {
		
		Label label1 = new Label("Label1");
		Label label2 = new Label("Label2");
		
		FlowPane root = new FlowPane(10, 10, label1, label2);
		root.setAlignment(Pos.CENTER);
		Scene scene = new Scene(root, 300, 150);
		stage.setScene(scene);
		
        stage.setTitle("FlowPane in JavaFX");
		
        stage.show();
	}
}
Alignment in FlowPane in JavaFX
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850