Javafx 简明教程

JavaFX - FlowPane Layout

FlowPane Layout in JavaFX

flow pane 布局将它的所有节点按顺序排列。在水平 Flow Pane 中,元素根据它们的高度环绕,而在垂直 Flow Pane 中,元素根据它们的宽度环绕。

在 JavaFX 中,包 javafx.scene.layout 中名为 FlowPane 的类表示 Flow Pane。要在我们的 JavaFX 应用程序中创建 Flow Pane 布局,使用以下任一构造函数实例化此类 −

  1. FlowPane() − 它构建一个新的水平 FlowPane 布局。

  2. FlowPane(double hGap, double vGap) − 它使用指定的 hGap 和 vGap 创建一个新的水平 FlowPane 布局。

  3. FlowPane(double hGap, double vGap, Node childNodes) − 使用指定的 hGap、vGap 和节点构建水平 FlowPane 布局。

  4. FlowPane(Orientation orientation) − 它使用指定的方向创建一个新的 FlowPane 布局。它可以是 HORIZONTAL 或 VERTICAL。

该类包含以下属性 −

S.No

properties & Description

1

alignment*This property represents the alignment of the contents of the Flow pane. We can set this property using the setter method *setAllignment()

2

columnHalignment 此属性表示垂直流窗格中节点的水平对齐方式。

3

rowValignment 此属性表示水平流窗格中节点的垂直对齐方式。

4

Hgap 此属性为 double 类型,表示流窗格的行/列间的水平间隙。

5

Orientation 此属性表示流窗格的方向。

6

Vgap 此属性为 double 类型,表示流窗格的行/列间的垂直间隙。

Example

以下是 FlowPane 布局的一个示例程序。在此,我们在水平流窗格中插入了四个按钮。将此代码保存在一个名为 FlowPaneExample.java 的文件中。

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.FlowPane;
import javafx.scene.shape.Sphere;
import javafx.stage.Stage;

public class FlowPaneExample extends Application {
   @Override
   public void start(Stage stage) {
      //Creating button1
      Button button1 = new Button("Button1");

      //Creating button2
      Button button2 = new Button("Button2");

      //Creating button3
      Button button3 = new Button("Button3");

      //Creating button4
      Button button4 = new Button("Button4");

      //Creating a Flow Pane
      FlowPane flowPane = new FlowPane();

      //Setting the horizontal gap between the nodes
      flowPane.setHgap(25);

      //Setting the margin of the pane
      flowPane.setMargin(button1, new Insets(20, 0, 20, 20));

      //Adding all the nodes to the flow pane
      flowPane.getChildren().addAll(button1, button2, button3, button4);

      //Creating a scene object
      Scene scene = new Scene(flowPane, 400, 300);

      //Setting title to the Stage
      stage.setTitle("Flow Pane Example in JavaFX");

      //Adding scene to the stage
      stage.setScene(scene);

      //Displaying the contents of the stage
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

使用以下命令,从命令提示符编译并执行已保存的 java 文件。

javac --module-path %PATH_TO_FX% --add-modules javafx.controls FlowPaneExample.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls FlowPaneExample

执行后,上述程序会生成如下所示的 JavaFX 窗口。

flowpane output

Example

在以下示例中,我们将创建一个具有垂直方向的 FlowPane。要设置方向,我们将通过将 Orientation.VERTICAL 枚举值作为参数传递给 FlowPane 类的参数化构造函数来使用它。将此代码保存在一个名为 JavafxFlowpane.java 的文件中。

import javafx.application.Application;
import javafx.geometry.Orientation;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.FlowPane;
import javafx.scene.shape.Sphere;
import javafx.stage.Stage;

public class JavafxFlowpane extends Application {
   @Override
   public void start(Stage stage) {
      //Creating button1
      Button button1 = new Button("Button1");

      //Creating button2
      Button button2 = new Button("Button2");

      //Creating button3
      Button button3 = new Button("Button3");

      //Creating button4
      Button button4 = new Button("Button4");

      //Creating a Flow Pane
      FlowPane flowPane = new FlowPane(Orientation.VERTICAL);

      //Setting the horizontal gap between the nodes
      flowPane.setVgap(15);

      //Setting the margin of the pane
      flowPane.setAlignment(Pos.CENTER);

      //Adding all the nodes to the flow pane
      flowPane.getChildren().addAll(button1, button2, button3, button4);

      //Creating a scene object
      Scene scene = new Scene(flowPane, 400, 300);

      //Setting title to the Stage
      stage.setTitle("Flow Pane Example in JavaFX");

      //Adding scene to the stage
      stage.setScene(scene);

      //Displaying the contents of the stage
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

要从命令提示符编译并执行已保存的 java 文件,请使用以下命令 −

javac --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxFlowpane.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxFlowpane

当我们执行上述 Java 程序时,它将生成一个显示以下输出的 JavaFX 窗口 −

flowpane output2