2014-09-15 12 views
5

Mam tabelę siatki w fxml z tytułem tekstu i 4 przyciskami. Sam GridPane jest wyśrodkowany, ale wszystkie przyciski są wyrównane do lewej strony w kolumnie siatki. Wiem, jak zmienić wyrównanie elementów za pomocą kodu Java, ale to nie jest idealna sytuacja, ponieważ chciałbym, aby wszystkie stylizacje były obsługiwane za pomocą FXML i CSS. Czy ktoś może zaproponować najlepszy sposób wyśrodkować elementy komórki w widoku GridPane JavaFX?Wyśrodkuj wyrównanie wierszy tabeli siatki w JavaFX

Odpowiedz

3

W 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

Trzeba wyrównać każdy obiekt w GridPane indywidualnie, a nie sam GridPane.

Aby to zrobić, przejdź do Układu: NazwaObiektu (np. Przycisk), a na Wyrównanie wybierz CENTRUM.

11

Aby ustawić element potomny o wartości GridPane wyrównany do środka, należy ustawić wartości Halignment i Valignment węzła potomnego.

W kodzie Java można zrobić coś podobnego do:

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

W FMXL można osiągnąć podobny efekt przez:

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

Jest łatwiejszy sposób, aby osiągnąć ten cel, jeśli chcesz wyrównaj wszystkie węzły określonej kolumny lub wiersza w celu wyrównania w tej samej kolejności. Zamiast dodawać do węzła halignment/valignment, można utworzyć ColumnConstraints lub RowConstraints i dodać je do 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> 

Można podobnie dodać także RowConstraints.

Powiązane problemy