immerhart immerhart - 3 months ago 16
Java Question

JavaFx GridPane - how to center elements

I have a

GridPane
filled with 1-letter-labels.

Here is an image:

image

Here is the code:

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);


How can I center the characters?

I have put them in a
HBox
and gave them spacing. I tried to make the
textAlignment
of the label to
CENTER
, but that doesn't work of course.

I tried this also:

gp.setAlignment(Pos.CENTER);


Has anybody an idea? Thanks!

Answer

oh, that was easy. i did the alignment on the wrong place. adding this will do the job:

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

thanks anyway.

Comments