Javafx 简明教程

JavaFX - GridPane Layout

GridPane Layout in JavaFX

GridPane 是一种布局容器类型,其中以形成行和列的网格方式排列所有节点。在创建窗体、图表、媒体库等时,此布局派上用场。

在 JavaFX 中,包 javafx.scene.layout 的名为 GridPane 的类表示 GridPane 布局。使用其默认构造函数实例化此类将在我们的 JavaFX 应用程序中创建一个网格窗格布局。该类提供以下属性 −

  1. alignment − 该属性表示窗格的对齐方式,您可以使用 setAlignment() 方法设置该属性的值。

  2. hgap − 该属性的类型为 double,表示列之间的水平间隙。

  3. vgap − 该属性的类型为 double,表示行之间的垂直间隙。

  4. gridLinesVisible − 该属性的类型为布尔型。为 true 时,窗格的线设置为可见。

下表说明了 JavaFX 网格窗格中的单元格位置。每个单元格的第一值表示行,第二值表示列。

(0, 0)

(1, 0)

(2, 0)

(0, 1)

(1, 1)

(2, 1)

(0, 2)

(1, 2)

(2, 2)

Example

以下程序是网格窗格布局的一个示例。在此,我们使用网格窗格创建一个窗体。将以下代码保存在名为 GridPaneExample.java 的文件中。

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Text;
import javafx.scene.control.TextField;
import javafx.stage.Stage;

public class GridPaneExample extends Application {
   @Override
   public void start(Stage stage) {
      //creating label email
      Text text1 = new Text("Email");

      //creating label password
      Text text2 = new Text("Password");

      //Creating Text Filed for email
      TextField textField1 = new TextField();

      //Creating Text Filed for password
      TextField textField2 = new TextField();

      //Creating Buttons
      Button button1 = new Button("Submit");
      Button button2 = new Button("Clear");

      //Creating a Grid Pane
      GridPane gridPane = new GridPane();

      //Setting size for the pane
      gridPane.setMinSize(400, 200);

      //Setting the padding
      gridPane.setPadding(new Insets(10, 10, 10, 10));

      //Setting the vertical and horizontal gaps between the columns
      gridPane.setVgap(5);
      gridPane.setHgap(5);

      //Setting the Grid alignment
      gridPane.setAlignment(Pos.CENTER);

      //Arranging all the nodes in the grid
      gridPane.add(text1, 0, 0);
      gridPane.add(textField1, 1, 0);
      gridPane.add(text2, 0, 1);
      gridPane.add(textField2, 1, 1);
      gridPane.add(button1, 0, 2);
      gridPane.add(button2, 1, 2);

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

      //Setting title to the Stage
      stage.setTitle("Grid 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 GridPaneExample.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls GridPaneExample

执行时,上述程序将生成一个 JavaFX 窗口,显示一个使用 GridPane 布局构建的表单。

gridpane output