11

我在 fxml 中有一个 GridPane,它有一个文本标题和 4 个按钮。GridPane 本身居中对齐,但所有按钮在网格列内左对齐。我知道如何使用 Java 代码更改项目的对齐方式,但这不是理想的情况,因为我希望使用 FXML 和 CSS 处理所有样式。任何人都可以建议在 JavaFX 的 GridPane 视图中居中对齐单元格元素的最佳方法吗?

4

3 回答 3

19

要将GridPanealigned的子节点设置为center,需要设置子节点的HalignmentValignment

在 Java 代码中,您可以执行以下操作:

GridPane.setHalignment(node, HPos.CENTER); // To align horizontally in the cell
GridPane.setValignment(node, VPos.CENTER); // To align vertically in the cell

在 FMXL 中,您可以通过以下方式实现类似的效果:

<GridPane>
      ... // other properties
     <children>
        <Button mnemonicParsing="false" text="Button" GridPane.halignment="CENTER" GridPane.valignment="CENTER" />
     </children>
</GridPane>

如果您想将特定列或行的所有节点对齐以按相同顺序对齐,则有一种更简单的方法可以实现此目的。halignment / valignment您可以创建ColumnConstraintsRowConstraints并将它们添加到GridPane,而不是添加到节点。

<GridPane>
    <columnConstraints>
        <ColumnConstraints hgrow="SOMETIMES" halignment="CENTER" minWidth="10.0" prefWidth="100.0" />
         ... // More constraints for other columns
    </columnConstraints>
    <children>
         <Button mnemonicParsing="false" text="Button" />
    </children>
</GridPane>

您也可以类似地添加RowConstraints

于 2015-05-22T06:12:18.433 回答
4

在 FXML 中:

<GridPane ...>
  <columnConstraints>

    <!-- one of these for each column: you can obviously have other properties set here if needed -->
    <ColumnConstraints halignment="CENTER" />

  </columnConstraints>
</GridPane>
于 2014-09-15T16:59:42.493 回答
0

您需要单独对齐 GridPane 中的每个对象,而不是 GridPane 本身。

为此,请转到布局:ObjectName(例如按钮),然后在 HAlignment 处选择 CENTER。

于 2015-05-22T03:31:53.687 回答