JavaFX 多种类型的面板

JavaFX 是用于构建富客户端应用程序的一种用户界面工具包。面板是 JavaFX 中非常重要的一个组件,它用于布局和管理其他控件。JavaFX 提供了多种类型的面板,以满足不同布局需求。本文将介绍 JavaFX 中常用的几种面板,并提供相应的代码示例。

1. StackPane

StackPane 是一个简单的布局面板,它可以将所有子控件堆叠在一起。子控件可以通过设置对齐方式来定位在面板的中心、左上角、右下角等位置。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class StackPaneExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        StackPane stackPane = new StackPane();
        stackPane.getChildren().add(new Button("Hello World"));

        Scene scene = new Scene(stackPane, 200, 200);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

运行上述代码,会显示一个按钮在面板的中心位置。

2. BorderPane

BorderPane 是一个常用的布局面板,它将子控件分布在上、下、左、右和中心五个区域。可以设置每个区域的最小宽度和最小高度,以及对齐方式。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class BorderPaneExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        BorderPane borderPane = new BorderPane();
        borderPane.setTop(new Button("Top"));
        borderPane.setBottom(new Button("Bottom"));
        borderPane.setLeft(new Button("Left"));
        borderPane.setRight(new Button("Right"));
        borderPane.setCenter(new Button("Center"));

        Scene scene = new Scene(borderPane, 400, 400);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

运行上述代码,会显示一个包含了五个按钮的 BorderPane。

3. GridPane

GridPane 是一个网格布局面板,它将子控件放置在一个二维的网格中。可以通过设置行和列的约束来指定子控件在网格中的位置和大小。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

public class GridPaneExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        GridPane gridPane = new GridPane();
        gridPane.add(new Button("Button 1"), 0, 0);
        gridPane.add(new Button("Button 2"), 1, 0);
        gridPane.add(new Button("Button 3"), 0, 1);
        gridPane.add(new Button("Button 4"), 1, 1);

        Scene scene = new Scene(gridPane, 300, 300);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

运行上述代码,会显示一个包含了四个按钮的 GridPane。

4. HBox 和 VBox

HBox 和 VBox 是两个常用的布局面板,分别表示水平和垂直方向上的盒子布局。它们可以将子控件按照水平或垂直顺序排列,并可以设置子控件之间的间距。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class HBoxExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        HBox hBox = new HBox();
        hBox.getChildren().addAll(
                new Button("Button 1"),
                new Button("Button 2"),
                new Button("Button 3")
        );

        Scene scene = new Scene(hBox, 300, 100);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

运行上述代码,会显示三个按钮水平排列的 HBox。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx