在 GridPane JAVAFX 中水平居中一行
Center Horizontally a Row in a GridPane JAVAFX
我想在我的 GridPane 中水平居中一行。我知道如何水平居中列(root.getColumnConstraints().get(0).setHalignment(HPos.CENTER);
),但我找不到行的这种方法。我只能更改列的对齐 属性 和一行的对齐 属性。但我需要的是一行的对齐,这是不存在的。那我该怎么做呢?
不可能对整行使用约束来执行此操作,但您可以使用 GridPane.setHalignment
在一行中的所有 Node
上设置 属性,这需要优先于 ColumnConstraints
.
例子
@Override
public void start(Stage primaryStage) {
Text text00 = new Text("text");
Text text01 = new Text("text");
Text text02 = new Text("text");
Text text10 = new Text("text");
Text text11 = new Text("text");
Text text12 = new Text("text");
GridPane gridPane = new GridPane();
ColumnConstraints cConstraints = new ColumnConstraints();
cConstraints.setHalignment(HPos.LEFT);
cConstraints.setHgrow(Priority.ALWAYS);
gridPane.getColumnConstraints().addAll(cConstraints, cConstraints);
gridPane.addColumn(0, text00, text01, text02);
gridPane.addColumn(1, text10, text11, text12);
GridPane.setHalignment(text11, HPos.CENTER);
GridPane.setHalignment(text01, HPos.CENTER);
Scene scene = new Scene(gridPane);
primaryStage.setScene(scene);
primaryStage.show();
}
请注意,您也可以在通过遍历子节点将节点添加到 GridPane
后执行此操作:
int alignRow = 1;
for (Node n : gridPane.getChildren()) {
Integer row = GridPane.getRowIndex(n);
int rowNumber = row == null ? 0 : rowNumber.intValue();
if (rowNumber = alignRow) {
GridPane.setHalignment(n, HPos.CENTER);
}
}
我想在我的 GridPane 中水平居中一行。我知道如何水平居中列(root.getColumnConstraints().get(0).setHalignment(HPos.CENTER);
),但我找不到行的这种方法。我只能更改列的对齐 属性 和一行的对齐 属性。但我需要的是一行的对齐,这是不存在的。那我该怎么做呢?
不可能对整行使用约束来执行此操作,但您可以使用 GridPane.setHalignment
在一行中的所有 Node
上设置 属性,这需要优先于 ColumnConstraints
.
例子
@Override
public void start(Stage primaryStage) {
Text text00 = new Text("text");
Text text01 = new Text("text");
Text text02 = new Text("text");
Text text10 = new Text("text");
Text text11 = new Text("text");
Text text12 = new Text("text");
GridPane gridPane = new GridPane();
ColumnConstraints cConstraints = new ColumnConstraints();
cConstraints.setHalignment(HPos.LEFT);
cConstraints.setHgrow(Priority.ALWAYS);
gridPane.getColumnConstraints().addAll(cConstraints, cConstraints);
gridPane.addColumn(0, text00, text01, text02);
gridPane.addColumn(1, text10, text11, text12);
GridPane.setHalignment(text11, HPos.CENTER);
GridPane.setHalignment(text01, HPos.CENTER);
Scene scene = new Scene(gridPane);
primaryStage.setScene(scene);
primaryStage.show();
}
请注意,您也可以在通过遍历子节点将节点添加到 GridPane
后执行此操作:
int alignRow = 1;
for (Node n : gridPane.getChildren()) {
Integer row = GridPane.getRowIndex(n);
int rowNumber = row == null ? 0 : rowNumber.intValue();
if (rowNumber = alignRow) {
GridPane.setHalignment(n, HPos.CENTER);
}
}