Класс javafx.scene.layout.TilePane позволяет организовать вложенные элементы в виде тайлов. Фактически тайлы представляют ячейки одинаковой высоты и ширины на пересечении строк и столбцов.
Для создания TilePane применяются следующие конструкторы:
TilePane(): создает горизонтальный TilePane
TilePane(double hgap, double vgap): создает горизонтальный TilePane и устанавливает отступы между тайлами по горизонтали (hgap) и по вертикали (vgap)
TilePane(double hgap, double vgap, Node... children): создает горизонтальный TilePane, устанавливает отступы между тайлами по горизонтали (hgap) и по вертикали (vgap) и добавляет элементы children
TilePane(Orientation orientation): создает TilePane с определенной ориентацией - горизонтальной или вертикальной
TilePane(Orientation orientation, double hgap, double vgap): создает TilePane и задает для него ориентацию и отступы между тайлами по вертикали и горизонтали
TilePane(Orientation orientation, double hgap, double vgap, Node... children): создает TilePane, задает для него ориентацию, отступы между тайлами по вертикали и горизнотали, а также коллекцию сложенных элементов
TilePane(Orientation orientation, Node... children): создает TilePane с определенной ориентацией и элементами
TilePane(Node... children): создает горизонтальный TilePane с элементами children
Простейший TilePane:
import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.TilePane; public class Main extends Application{ public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage stage) { Button first = new Button("First"); Button second = new Button("Second"); Button third = new Button("Third"); Button fourth = new Button("Fourth"); Button fifth = new Button("Fifth"); Button sixth = new Button("Sixth"); TilePane tilepane = new TilePane(first, second, third, fourth, fifth, sixth); Scene scene = new Scene(tilepane, 300, 200); stage.setScene(scene); stage.setTitle("TilePane in JavaFX"); stage.show(); } }
По умолчанию создается TilePane с горизонтальной ориентацией. То есть все вложенные элементы размещаются в строку. Если места не хватает, то они переносятся на новую строку:
Соответственно мы также можем задать вертикальную ориентацию:
import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.TilePane; import javafx.geometry.Orientation; public class Main extends Application{ public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage stage) { Button first = new Button("First"); Button second = new Button("Second"); Button third = new Button("Third"); Button fourth = new Button("Fourth"); Button fifth = new Button("Fifth"); Button sixth = new Button("Sixth"); TilePane tilepane = new TilePane(Orientation.VERTICAL, first, second, third, fourth, fifth, sixth); Scene scene = new Scene(tilepane, 300, 200); stage.setScene(scene); stage.setTitle("TilePane in JavaFX"); stage.show(); } }
Некоторые основные методы TilePane:
void setAlignment(Pos value)
: устанавливает выравнивание TilePane
static void setAlignment(Node node, Pos value)
: устанавливает выравнивание элемента node внутри TilePane
void setHgap(double value)
: устанавливает отступы между тайлами по горизонтали
static void setMargin(Node node, Insets value)
: устанавливает отступы элементы от границ тайла
void setOrientation(Orientation value)
: устанавливает ориентацию TilePane
void setPrefTileHeight(double value)
: устанавливает предпочтительную высоту тайла
void setPrefTileWidth(double value)
: устанавливает предпочтительную ширину тайла
void setTileAlignment(Pos value)
: устанавливает выравнивание всех элементов внутри тайлов
void setHgap(double value)
: устанавливает отступы между тайлами по вертикали
По умолчанию размер каждого тайла устанавливается таким образом, чтобы он мог вместить все содержимое вложенного элемента. Но с помощью методов setPrefTileWidth() и setPrefTileHeight() можно установить соответственно ширину и высоту тайлов:
Button first = new Button("First"); Button second = new Button("Second"); Button third = new Button("Third"); Button fourth = new Button("Fourth"); Button fifth = new Button("Fifth"); Button sixth = new Button("Sixth"); TilePane tilepane = new TilePane(first, second, third, fourth, fifth, sixth); tilepane.setPrefTileWidth(100); tilepane.setPrefTileHeight(100);