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