JavaFX - 布局窗格(容器)

  • 简述

    在一个场景中构建完所有需要的节点后,我们一般会按顺序排列它们。
    容器内组件的这种排列称为容器的布局。我们也可以说我们遵循了一种布局,因为它包括将所有组件放置在容器内的特定位置。
    JavaFX 提供了几种预定义的布局,例如 HBox, VBox, Border Pane, Stack Pane, Text Flow, Anchor Pane, Title Pane, Grid Pane, Flow Panel, 等等。
    上面提到的每个布局都由一个类表示,所有这些类都属于包 javafx.layout. 类名为Pane 是 JavaFX 中所有布局的基类。
  • 创建布局

    要创建布局,您需要 -
    • 创建节点。
    • 实例化所需布局的相应类。
    • 设置布局的属性。
    • 将所有创建的节点添加到布局中。
  • 创建节点

    首先,通过实例化它们各自的类来创建 JavaFX 应用程序所需的节点。
    例如,如果您想要一个文本字段和两个按钮,即在 HBox 布局中播放和停止 - 您必须首先创建这些节点,如以下代码块所示 -
    
    //Creating a text field 
    TextField textField = new TextField();       
    //Creating the play button 
    Button playButton = new Button("Play");       
    //Creating the stop button 
    Button stopButton = new Button("stop");
    
  • 实例化相应的类

    创建节点(并完成对它们的所有操作)后,实例化所需布局的类。
    例如,如果要创建 Hbox 布局,则需要按如下方式实例化此类。
    
    HBox hbox = new HBox();
    
  • 设置布局的属性

    实例化该类后,您需要使用它们各自的 setter 方法设置布局的属性。
    例如 - 如果要在 HBox 布局中创建的节点之间设置空间,则需要将值设置为名为间距的属性。这可以通过使用 setter 方法来完成setSpacing() 如下图所示 -
    
    hbox.setSpacing(10);
    
  • 将形状对象添加到组

    最后,您需要将形状的对象作为构造函数的参数传递给组,如下所示。
    
    //Creating a Group object  
    Group root = new Group(line);
    
  • 布局窗格

    以下是 JavaFX 提供的各种布局窗格(类)。这些类存在于包中javafx.scene.layout.
    序号 形状和描述
    1 盒子
    HBox 布局将我们应用程序中的所有节点排列在一个水平行中。
    类名为 HBox 包裹的 javafx.scene.layout 表示文本水平框布局。
    2 视箱
    VBox 布局将我们应用程序中的所有节点排列在一个垂直列中。
    类名为 VBox 包裹的 javafx.scene.layout 表示文本垂直框布局。
    3 边框
    Border Pane 布局将我们应用程序中的节点排列在顶部、左侧、右侧、底部和中心位置。
    类名为 BorderPane 包裹的 javafx.scene.layout 表示边框窗格布局。
    4 堆栈面板
    堆栈窗格布局将我们应用程序中的节点排列在另一个顶部,就像在堆栈中一样。首先添加的节点放置在堆栈的底部,下一个节点放置在堆栈的顶部。
    类名为 StackPane 包裹的 javafx.scene.layout 表示堆栈窗格布局。
    5 文本流
    文本流布局在单个流中排列多个文本节点。
    类名为 TextFlow 包裹的 javafx.scene.layout 表示文本流布局。
    6 锚定面板
    Anchor 窗格布局将应用程序中的节点锚定在距窗格特定距离处。
    类名为 AnchorPane 包裹的 javafx.scene.layout 表示锚窗格布局。
    7 平铺面板
    Tile Pane 布局以统一大小的图块的形式添加了我们应用程序的所有节点。
    类名为 TilePane 包裹的 javafx.scene.layout 表示 TilePane 布局。
    8 网格面板
    网格窗格布局将我们应用程序中的节点排列为行和列的网格。这种布局在使用 JavaFX 创建表单时非常方便。
    类名为 GridPane 包裹的 javafx.scene.layout 表示 GridPane 布局。
    9 流窗格
    流窗格布局将所有节点包装在一个流中。水平流动窗格以其高度包裹窗格的元素,而垂直流动窗格以其宽度包裹元素。
    类名为 FlowPane 包裹的 javafx.scene.layout 表示流窗格布局。