今晚看了一下JavaFX SDK中布局容器相关类,面板(Pane)。
写个大概吧。
FlowPane:
节点以水平方式一行一行放置或者垂直方式一列一列放置。垂直的FlowPane会在高度边界处自动换列,水平的FlowPane会在宽度边界处自动换行。
FlowPane flow = new FlowPane();
flow.setPadding(new Insets(5, 0, 5, 0));//设置
flow.setVgap(4);//设置节点间垂直间隔
flow.setHgap(4);//设置节点间水平间隔
flow.setPrefWrapLength(100); // 设置FlowPane的宽度
flow.setStyle(“-fx-background-color: DAE6F3;”);
BorderPane:
布局面包被划分为5个区域来放置界面元素:上、下、左、右、中。每个区域的大小是没有限制的。在你使用BorderPane时,如果不需要某个区域,你只要不为该区域设置内容,该区域则不会被分配显示空间,自然也就不会显示。
BorderPane border=new BorderPane();
border.setLeft(node1);
border.setTop(node2)
border.setCenter(node3);
border.setRight(node4);
HBox/VBox: 将多个结点排列在一行或者一列。 VBox的宽度与其包含的所有组件的最大预设宽度一致,HBox同理。
HBox hbox = new HBox();
hbox.setPadding(new Insets(10, 10, 10, 10)); //节点到边缘的距离
hbox.setSpacing(10); //节点之间的间距
hbox.setStyle(“-fx-background-color: #32239;”); //背景色
Button bt1 = new Button(“miao”);
Button bt2 = new Button(“wang”);
hbox.getChildren().addAll(bt1,bt2);
StackPane:
将所有的节点放在一个堆栈中进行布局管理,后添加进去的节点会显示在前一个添加进去的节点之上。
对齐属性(Alignment)可控制子节点在StackPane中的位置,同时该属性会影响所有的子节点。
外边距属性(Margin)控制在StackPane中的单个子节点位置。
GridPane:
节点可以被放置到任意一个单元格中,也可以根据需要设置一个节点跨越多个单元格(行或者列)。
关于这个多说几句,每个单元格的长宽都和单元格内的node的长宽相关,对于某一行或者某一列,总是选择最长的那个node长度来成为单元格的长度。但是如果node跨越了多个单元格,那么选择除了该node以外的最长的node。
GridPane grid = new GridPane();
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(0, 10, 0, 10));
// 将node1放在第1行,第2列
Text node1 = new Text(“node1”);
category.setFont(Font.font(“Arial”, FontWeight.BOLD, 20));
grid.add(category, 1, 0);
// 将node2放在第2行,占第2和第3列
Text chartSubtitle = new Text(“node22222222222222”);
grid.add(chartSubtitle, 1, 1, 2, 1);
大概就这样,以后再补充。