Ho una GridPane in fxml che ha un titolo di testo e 4 pulsanti. Il GridPane stesso è allineato al centro, ma tutti i pulsanti sono allineati a sinistra all'interno della colonna della griglia. So come modificare l'allineamento degli oggetti usando il codice Java, ma questa non è la situazione ideale, perché vorrei che tutti gli stili venissero gestiti usando FXML e CSS. Qualcuno può suggerire il modo migliore per centrare gli elementi di allineamento di una cella in una vista GridPane di JavaFX?Center Align Righe di una GridPane in JavaFX
risposta
In FXML:
<GridPane ...>
<columnConstraints>
<!-- one of these for each column: you can obviously have other properties set here if needed -->
<ColumnConstraints halignment="CENTER" />
</columnConstraints>
</GridPane>
è necessario allineare ogni oggetto del GridPane individualmente, non il GridPane stesso.
Per eseguire questa operazione, andare su Layout: Nome oggetto (esempio pulsante) e in HAlignment selezionare CENTRO.
Per impostare un figlio di GridPane
allineato al centro, è necessario impostare Halignment e Valignment del nodo figlio.
Nel codice Java che si può fare qualcosa di simile a:
GridPane.setHalignment(node, HPos.CENTER); // To align horizontally in the cell
GridPane.setValignment(node, VPos.CENTER); // To align vertically in the cell
In FMXL è possibile ottenere un effetto simile da:
<GridPane>
... // other properties
<children>
<Button mnemonicParsing="false" text="Button" GridPane.halignment="CENTER" GridPane.valignment="CENTER" />
</children>
</GridPane>
C'è un modo più semplice per raggiungere questo obiettivo se si vuole allinea tutti i nodi di una particolare colonna o riga per essere allineati nello stesso ordine. Invece di aggiungere un halignment/valignment
al nodo, è possibile creare un ColumnConstraints o un RowConstraints e aggiungerli a 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>
È possibile aggiungere in modo simile RowConstraints
pure.