JavaFx 的布局(全)

一、javaFX 布局
网上的资料乱七八糟的,没有一个讲的全的; 这次我要把布局搞个完全的记录。

先上文档链接

1、 文档就看这个就够了,刚开始去CSDN浪费了我不少积分
https://docs.oracle.com/javase/8/javafx/api/
2、打开文档找这个 javafx.scene.layout.Pane ,布局就都在这里了,不用去网上搜索那些碎片的资料,这里就是最全的布局的说明文档。
3、布局类列表:

类名 布局中文名 说明
AnchorPane 锚点布局 设置元素距离上、下、左、右多少像素
BorderPane 边框布局 设置元素在容器的上、下、左、右、中里面,中间区域的边距是受四边内元素影响的
DialogPane 对话框布局 可设置标题、内容
FlowPane 流式布局 按顺序排列,可横向、竖向排列元素,到末尾重新换行或者换列排列,与Hbox、VBox不同的地方
GridPane 网络布局 按网格来布局,设置横、竖index来定位,
HBox 横向布局 FlowPane 可以显示全,到末尾重新换行
VBox 竖向布局 VBox、HBox超过了边界就被截了
StackPane 堆叠布局 堆叠布局 ,元素会叠在一起,如果没给每一个元素单独设置位置,就叠在一起
TextFlow 富文本 能把文字、图片、按钮搞在一起
TilePane 砖块布局 跟那个啥布局很像,这个单个块大小,不影响其它块

4、上代码

  // 1、坐标布局 设置元素距离上、下、左、右多少像素
        AnchorPane anchorP = new AnchorPane();
        anchorP.getChildren().addAll(btn1,btn2);
        AnchorPane.setLeftAnchor(btn1 , Double.valueOf(0));
        AnchorPane.setRightAnchor(btn2 , Double.valueOf(0));
        AnchorPane.setTopAnchor(btn2 , Double.valueOf(0));

        // 2、边框布局 把元素都设置到4个边缘的位置
        BorderPane borderPane = new BorderPane();
        borderPane.setTop(btn4);
        borderPane.setRight(btn5);
        borderPane.setCenter(anchorP);

        // 3、DialogPane 弹框布局,
        DialogPane dialogPane = new DialogPane();
        dialogPane.setHeaderText("标题");
        dialogPane.setContent(btn1);

        // 4、FlowPane 流式布局
        FlowPane flowPane = new FlowPane();
        flowPane.setHgap(40);// 设置水平间隙
        flowPane.setVgap(40);// 设置竖直间隙
        flowPane.setOrientation(Orientation.VERTICAL);// 设置竖直排列
        flowPane.getChildren().addAll(btn1,btn2,btn3,btn4);

        // 5、GridPane 网络布局 index 都是从0开始,
        //     如果不从0开始设置,就自动把最小index 设为了0的位置 
        GridPane gridPane = new GridPane();
        gridPane.setMinSize(100,100);
        GridPane.setColumnIndex(btn1 , 1);
        GridPane.setRowIndex(btn1,1);
        GridPane.setColumnIndex(btn2 , 1);
        GridPane.setRowIndex(btn2,2);
        GridPane.setColumnIndex(btn3 , 2);
        GridPane.setRowIndex(btn3,1);
        GridPane.setColumnIndex(btn4 , 2);
        GridPane.setRowIndex(btn4,2);
        GridPane.setColumnIndex(btn5 , 3);
        GridPane.setRowIndex(btn5,3);
        GridPane.setColumnIndex(btn6 , 4);
        GridPane.setRowIndex(btn6,4);
        // 这个网格布局还是建议用 fxml 来写吧,这代码看着挺别扭
        gridPane.getChildren().addAll(btn1,btn2,btn3,btn4,btn5,btn6);

        // 6、VBox 简单,就是竖着排下来,HBox 就是横着排下来的
        VBox vBox = new VBox();
        vBox.setAlignment(Pos.TOP_RIGHT);// 设置靠哪边
        vBox.setFillWidth(true);
        vBox.setSpacing(Double.valueOf(20));
        vBox.setMaxSize(120,10);
        vBox.getChildren().addAll(btn1,btn2,btn3,btn4,btn5,btn6);

        // 7、StackPane 堆叠布局 ,元素会叠在一起,
        //如果没给每一个元素单独设置位置,就叠在一起
        StackPane stackPane = new StackPane();
        stackPane.setAlignment(Pos.BOTTOM_CENTER);
        StackPane.setAlignment(btn1,Pos.CENTER_LEFT);
        stackPane.getChildren().addAll(btn1,btn2,btn3,btn4,btn5,btn6);

        // 8、TextFlow 这个应该不算布局,富文本可以用这个,
           //可以把文字、图片、按钮等弄在一起,很好用。
        TextFlow textFlow = new TextFlow();
        textFlow.setMaxSize(100,20);
        textFlow.setMaxWidth(100);
        Label label = new Label();
        label.setMaxWidth(100);
        label.setWrapText(true);
        label.setText("我 你");
        textFlow.getChildren().addAll(label);

        // 9、TilePane   砖块布局 其中一个块的大小,不影响其它块的大小
        TilePane tilePane = new TilePane();
        tilePane.setPrefRows(1);
        tilePane.setPrefColumns(2);
        tilePane.setHgap(2);
        tilePane.setVgap(3);
        TilePane.setMargin(btn1 , new Insets( 100,100,100,100));
        tilePane.getChildren().addAll(btn1,btn2,btn3,btn4,btn5,btn6);

你可能感兴趣的:(JavaFx 的布局(全))