在GridPane JAVAFX中水平居中一行

Posted

技术标签:

【中文标题】在GridPane JAVAFX中水平居中一行【英文标题】:Center Horizontally a Row in a GridPane JAVAFX 【发布时间】:2017-03-21 04:32:16 【问题描述】:

我想在我的 GridPane 中水平居中一行。我知道如何将一列水平居中(root.getColumnConstraints().get(0).setHalignment(HPos.CENTER);),但我找不到行的这种方法。我只能更改列的 Halignment 属性和行的 Valignment 属性。但我需要的是一行的对齐,它不存在。那么我该怎么做呢?

This is what I want at the end

【问题讨论】:

JavaFx GridPane - how to center elements的可能重复 【参考方案1】:

不可能对整行的 using 约束执行此操作,但您可以使用 GridPane.setHalignment 为一行中的所有 Nodes 设置属性,该属性优先于 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 JAVAFX中水平居中一行的主要内容,如果未能解决你的问题,请参考以下文章

Swift:如何在垂直stackview中水平居中元素

css如何实现span在div中水平居中

如何在 Tailwind CSS 中水平居中导航栏内容

如何使用 CSS 字段样式在网格中水平居中视图字段

如何使用部分在CollectionView中水平居中行

我可以强制 JavaFX 的 GridPane 平均分配空间吗?