JavaFx中的“窗格”是什么?

JavaFx中的“窗格”是什么?,java,javafx,Java,Javafx,上面的代码创建了一个带有按钮的图形用户界面。但我不明白什么是窗格,为什么我们需要它。我也不明白为什么我们在添加按钮时需要调用getChildren方法,比如 import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.StackPane; import javafx.stage.Stage; pub

上面的代码创建了一个带有按钮的图形用户界面。但我不明白什么是窗格,为什么我们需要它。我也不明白为什么我们在添加按钮时需要调用getChildren方法,比如

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

public class ButtonInPane extends Application {
@Override 
// Override the start method in the Application class

public void start(Stage primaryStage) {
// Create a scene and place a button in the scene

StackPane pane = new StackPane();
pane.getChildren().add(new Button("OK"));
Scene scene = new Scene(pane, 200, 50);
primaryStage.setTitle("Button in a pane"); // Set the stage title
primaryStage.setScene(scene); // Place the scene in the stage
primaryStage.show(); // Display the stage
}

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

JavaFX应用程序可以通过为每个UI元素设置位置和大小属性来手动布局UI。但是,更简单的选择是使用布局窗格。JavaFXSDK提供了几个布局窗格,用于轻松设置和管理经典布局,如行、列、堆栈、平铺等。调整窗口大小时,布局窗格会根据节点的属性自动重新定位和调整其包含的节点的大小

javaFX中有6个面板,例如:BorderPane、StackPane、GridPane、FlowPane、TilePane和AnchorPane

堆叠窗格 堆栈窗格允许您将多个节点一个放置在另一个上

"pane.getChildren().add(new Button("OK"));".
网格窗格 GridPane允许您创建一个灵活的行和列网格,并将每个节点精确定位

StackPane root = new StackPane();
Button btn1 = new Button(" 1 ");
Button btn2 = new Button("22222222");
root.getChildren().addAll(btn2, btn1);
root.setStyle("-fx-background-color: #87CEFA;");
流程窗格 “流”窗格按添加顺序依次放置所有节点

 GridPane grid = new GridPane();
grid.setPadding(new Insets(10, 10, 10, 10));
grid.setMinSize(300, 300);
grid.setVgap(5);
grid.setHgap(5);

Text username = new Text("Username:");
grid.add(username, 0, 0);

TextField text = new TextField();
text.setPrefColumnCount(10);
grid.add(text, 1, 0);

Text password = new Text("Password:");
grid.add(password, 0, 1);

TextField text2 = new TextField();
text2.setPrefColumnCount(10);
grid.add(text2, 1, 1);
grid.setStyle("-fx-background-color: #D8BFD8");
FlowPane flow = new FlowPane();
flow.setPadding(new Insets(10, 10, 10, 10));
flow.setStyle("-fx-background-color: DAE6F3;");
flow.setHgap(5);
flow.getChildren().addAll(left, center);
替利班 TilePane类似于流窗格。所有节点都按添加顺序放置在网格中

 GridPane grid = new GridPane();
grid.setPadding(new Insets(10, 10, 10, 10));
grid.setMinSize(300, 300);
grid.setVgap(5);
grid.setHgap(5);

Text username = new Text("Username:");
grid.add(username, 0, 0);

TextField text = new TextField();
text.setPrefColumnCount(10);
grid.add(text, 1, 0);

Text password = new Text("Password:");
grid.add(password, 0, 1);

TextField text2 = new TextField();
text2.setPrefColumnCount(10);
grid.add(text2, 1, 1);
grid.setStyle("-fx-background-color: #D8BFD8");
FlowPane flow = new FlowPane();
flow.setPadding(new Insets(10, 10, 10, 10));
flow.setStyle("-fx-background-color: DAE6F3;");
flow.setHgap(5);
flow.getChildren().addAll(left, center);
锚烷 AnchorPane允许您在窗格的顶部、底部、左侧、右侧或中心定位节点

TilePane tile = new TilePane();
tile.setPadding(new Insets(10, 10, 10, 10));
tile.setPrefColumns(2);
tile.setStyle("-fx-background-color: #CD5C5C;");
HBox hbox2 = new HBox(8); // spacing = 8
hbox2.getChildren().addAll(top, left, center);
tile.getChildren().add(hbox2);
边界窗格 BorderPane将场景拆分为五个区域,例如:顶部、底部、左侧、右侧和中心。可以在其中调整添加的节点。BorderPane还允许您在每个区域中添加不同的窗格,如我的示例所示。但是,不能多次使用同一窗格

AnchorPane anchorpane = new AnchorPane();
Button buttonSave = new Button("Save");
Button buttonCancel = new Button("Cancel");
anchorpane.setStyle("-fx-background-color: #A9A9A9;");
HBox hb = new HBox();
hb.getChildren().addAll(buttonSave, buttonCancel);
anchorpane.getChildren().addAll(hb);
anchorpane.setMinSize(300, 100);
AnchorPane.setRightAnchor(hb, 10.0);
从:

JavaFX应用程序可以通过为每个UI元素设置位置和大小属性来手动布局UI。但是,更简单的选择是使用布局窗格。JavaFXSDK提供了几个布局窗格,用于轻松设置和管理经典布局,如行、列、堆栈、平铺等。调整窗口大小时,布局窗格会根据节点的属性自动重新定位和调整其包含的节点的大小

javaFX中有6个面板,例如:BorderPane、StackPane、GridPane、FlowPane、TilePane和AnchorPane

堆叠窗格 堆栈窗格允许您将多个节点一个放置在另一个上

"pane.getChildren().add(new Button("OK"));".
网格窗格 GridPane允许您创建一个灵活的行和列网格,并将每个节点精确定位

StackPane root = new StackPane();
Button btn1 = new Button(" 1 ");
Button btn2 = new Button("22222222");
root.getChildren().addAll(btn2, btn1);
root.setStyle("-fx-background-color: #87CEFA;");
流程窗格 “流”窗格按添加顺序依次放置所有节点

 GridPane grid = new GridPane();
grid.setPadding(new Insets(10, 10, 10, 10));
grid.setMinSize(300, 300);
grid.setVgap(5);
grid.setHgap(5);

Text username = new Text("Username:");
grid.add(username, 0, 0);

TextField text = new TextField();
text.setPrefColumnCount(10);
grid.add(text, 1, 0);

Text password = new Text("Password:");
grid.add(password, 0, 1);

TextField text2 = new TextField();
text2.setPrefColumnCount(10);
grid.add(text2, 1, 1);
grid.setStyle("-fx-background-color: #D8BFD8");
FlowPane flow = new FlowPane();
flow.setPadding(new Insets(10, 10, 10, 10));
flow.setStyle("-fx-background-color: DAE6F3;");
flow.setHgap(5);
flow.getChildren().addAll(left, center);
替利班 TilePane类似于流窗格。所有节点都按添加顺序放置在网格中

 GridPane grid = new GridPane();
grid.setPadding(new Insets(10, 10, 10, 10));
grid.setMinSize(300, 300);
grid.setVgap(5);
grid.setHgap(5);

Text username = new Text("Username:");
grid.add(username, 0, 0);

TextField text = new TextField();
text.setPrefColumnCount(10);
grid.add(text, 1, 0);

Text password = new Text("Password:");
grid.add(password, 0, 1);

TextField text2 = new TextField();
text2.setPrefColumnCount(10);
grid.add(text2, 1, 1);
grid.setStyle("-fx-background-color: #D8BFD8");
FlowPane flow = new FlowPane();
flow.setPadding(new Insets(10, 10, 10, 10));
flow.setStyle("-fx-background-color: DAE6F3;");
flow.setHgap(5);
flow.getChildren().addAll(left, center);
锚烷 AnchorPane允许您在窗格的顶部、底部、左侧、右侧或中心定位节点

TilePane tile = new TilePane();
tile.setPadding(new Insets(10, 10, 10, 10));
tile.setPrefColumns(2);
tile.setStyle("-fx-background-color: #CD5C5C;");
HBox hbox2 = new HBox(8); // spacing = 8
hbox2.getChildren().addAll(top, left, center);
tile.getChildren().add(hbox2);
边界窗格 BorderPane将场景拆分为五个区域,例如:顶部、底部、左侧、右侧和中心。可以在其中调整添加的节点。BorderPane还允许您在每个区域中添加不同的窗格,如我的示例所示。但是,不能多次使用同一窗格

AnchorPane anchorpane = new AnchorPane();
Button buttonSave = new Button("Save");
Button buttonCancel = new Button("Cancel");
anchorpane.setStyle("-fx-background-color: #A9A9A9;");
HBox hb = new HBox();
hb.getChildren().addAll(buttonSave, buttonCancel);
anchorpane.getChildren().addAll(hb);
anchorpane.setMinSize(300, 100);
AnchorPane.setRightAnchor(hb, 10.0);

那么,窗格是否只是场景中的一个区域,随着窗口大小的调整,它会自动调整大小?是的,它是一种控制容器,将它们放在一起。那么,窗格是否只是场景中的一个区域,随着窗口大小的调整,它会自动调整大小?是的,它是一种控制容器,将它们放在一起。窗格是一个UI元素节点,包含其他UI元素子节点,并管理窗格中这些节点的布局。窗格中有几个预定义的窗格类型子类,它们在布局子节点的方式上有所不同。窗格是包含其他UI元素子节点并管理窗格中这些节点布局的UI元素节点。窗格的几个预定义窗格类型子类在布局子节点的方式上有所不同。