JavaFx GridPane – come centro di elementi

Ho un GridPane riempito con 1 lettera etichette.

Ecco un’immagine:

JavaFx GridPane - come centro di elementi

Ecco il codice:

int charSpacing = 1;
int charsInWidth = 28;
int charsInHeight = 16;

double charWidth = 15;
double charHeight = 20;

GridPane gp = new GridPane();
gp.setAlignment(Pos.CENTER);

Label[] tmp = new Label[charsInHeight*charsInWidth];

String text = "W";
int currArrPos = 0;

for(int y = 0; y < charsInHeight; y++) {
    HBox hbox = new HBox(charSpacing);

    for(int x = 0; x < charsInWidth; x++) {
        tmp[currArrPos] = new Label(text);
        tmp[currArrPos].setTextFill(Paint.valueOf("white"));

        tmp[currArrPos].setMinHeight(charHeight);
        tmp[currArrPos].setMinWidth(charWidth);
        tmp[currArrPos].setMaxHeight(charHeight);
        tmp[currArrPos].setMaxWidth(charWidth);

        tmp[currArrPos].setStyle("-fx-border-color: white;");
        hbox.getChildren().add(tmp[currArrPos++]);

        if(x%2 == 0){
            text = "I";
        } else{
            text = "W";
        }
    }
    gp.add(hbox, 1, y);
}
guiDisplay.getChildren().add(gp);

Come posso center personaggi?

Li ho messi in un HBox e ha dato loro spaziatura. Ho provato a fare il textAlignment dell’etichetta per CENTER, ma che non funziona ovviamente.

Ho provato anche questo:

gp.setAlignment(Pos.CENTER);

Qualcuno ha un’idea? Grazie!

InformationsquelleAutor immerhart | 2012-10-10



3 Replies
  1. 11

    oh, è stato facile. ho fatto l’allineamento sul posto sbagliato. l’aggiunta di questo farà il lavoro:

    tmp[currArrPos].setAlignment(Pos.CENTER);

    grazie comunque.

  2. 4

    È possibile utilizzare il setAligment(Pos.CENTER) proprietà dell’elemento-

    o è possibile definire un contraint per il GridPane che contiene gli elementi

    <columnConstraints>
        <ColumnConstraints halignment="CENTER" />
    </columnConstraints>

    Esempio:

    <?import javafx.geometry.Insets?>
    <?import javafx.scene.layout.GridPane?>
    <?import javafx.scene.control.Label?>
    <?import javafx.scene.layout.ColumnConstraints?>
    
    <GridPane fx:controller="app.graphics.Controller"
              xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
        <columnConstraints>
            <ColumnConstraints halignment="CENTER" />
        </columnConstraints>
    </GridPane>

Lascia un commento