JavaFX - FlowPane 布局



JavaFX 中的 FlowPane 布局

FlowPane 布局将其所有节点排列成流。在水平 FlowPane 中,元素根据其高度进行换行,而在垂直 FlowPane 中,元素根据其宽度进行换行。

在 JavaFX 中,名为 FlowPane 的类(位于 javafx.scene.layout 包中)表示 FlowPane。要在我们的 JavaFX 应用程序中创建 FlowPane 布局,请使用以下任何构造函数实例化此类:

  • FlowPane() - 它构造一个新的水平 FlowPane 布局。

  • FlowPane(double hGap, double vGap) - 它创建一个新的水平 FlowPane 布局,并具有指定的 hGap 和 vGap。

  • FlowPane(double hGap, double vGap, Node childNodes) - 构造一个水平 FlowPane 布局,并具有指定的 hGap、vGap 和节点。

  • FlowPane(Orientation orientation) - 它创建一个新的 FlowPane 布局,并具有指定的 orientation。它可以是 HORIZONTAL 或 VERTICAL。

此类包含以下属性:

序号 属性和描述
1 alignment

此属性表示 FlowPane 内容的对齐方式。我们可以使用 setter 方法 setAllignment() 设置此属性。

2 columnHalignment

此属性表示垂直 FlowPane 中节点的水平对齐方式。

3 rowValignment

此属性表示水平 FlowPane 中节点的垂直对齐方式。

4 Hgap

此属性为 double 类型,它表示 FlowPane 的行/列之间的水平间距。

5 Orientation

此属性表示 FlowPane 的方向。

6 Vgap

此属性为 double 类型,它表示 FlowPane 的行/列之间的垂直间距。

示例

以下程序是 FlowPane 布局的一个示例。在此,我们将四个按钮插入水平 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

示例

在以下示例中,我们将创建一个方向为垂直的 FlowPane。要设置方向,我们将使用 FlowPane 类的带参数构造函数,并将 Orientation.VERTICAL 枚举值作为参数传递。将此代码保存在名为 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
广告