2014-09-15 3 views
5

У меня есть GridPane в fxml, который имеет текстовое название и 4 кнопки. Сама GridPane выравнивается по центру, но все кнопки выравниваются влево в столбце сетки. Я знаю, как изменить выравнивание элементов с помощью Java-кода, но это не идеальная ситуация, так как я бы хотел, чтобы весь стиль был обработан с использованием FXML и CSS. Может ли кто-нибудь предложить лучший способ центрирования элементов ячейки в представлении GridPane для JavaFX?Центр выравнивания строк грид-панели в JavaFX

ответ

3

В FXML:

<GridPane ...> 
    <columnConstraints> 

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

    </columnConstraints> 
</GridPane> 
0

Вы должны выровнять каждый объект в отдельности GridPane, а не сам GridPane.

Для этого перейдите к макету: ObjectName (например, кнопка), а в меню HAlignment выберите CENTER.

11

Чтобы установить дочерний узел GridPane в центр, вам необходимо установить Halignment и Valignment дочернего узла.

В 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 к узлу вы можете создать ColumnConstraints или RowConstraints и добавить их в 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, а также.

Смежные вопросы