2017-01-23 10 views
2

Ich habe 2 Komponenten: Label & Button. Ich möchte sie nebeneinander setzen & sie zusammen in CENTER ausrichten. Aber ich habe es versäumt, da sie immer noch LINKS, aber nicht CENTER ausgerichtet sind.JavaFX So zentrieren mehrere Komponenten nebeneinander

enter image description here

Mein Code unten ein:

Label sloganLbl = new Label("With cost as low as $1.99, you can own a fraction share of U.S. stock. No account yet?"); 
sloganLbl.getStyleClass().add("blue-small-font"); 


Button signUpBtn = new Button("Open account now"); 
signUpBtn.getStyleClass().add("green-btn-small-font"); 

GridPane topGrid = new GridPane(); 

topGrid.setHgap(20); 
topGrid.add(sloganLbl, 0, 0); 
topGrid.add(signUpBtn, 1, 0); 
topGrid.setGridLinesVisible(true); 

GridPane.setHalignment(sloganLbl, HPos.RIGHT); 
GridPane.setHalignment(signUpBtn, HPos.LEFT); 

BorderPane topBorder = new BorderPane(); 
topBorder.setPadding(new Insets(15, 10, 15, 10)); 
topBorder.setCenter(topGrid); 

topBorder.getStyleClass().add("blue-small-font"); 
topGrid.getStyleClass().add("blue-small-font"); 

borderPane.setTop(topBorder); 

Das Problem ist topBorder.setCenter(topGrid); ist nicht in der Lage, den Inhalt in der Mitte zu zentrieren. Scheint, dass topGrid volle Breite einnimmt, nicht nur die Gesamtbreite seiner 2 Spalten.

Wie kann ich die Mittenausrichtung erreichen? Vielen Dank!

Antwort

2

Sie können die GridPane mit einer Lückenfüllersäule links und rechts aktualisieren.

ColumnConstraints leftFiller = new ColumnConstraints(); 
leftFiller.setHgrow(Priority.ALWAYS); // Fills the space left on the left side 
ColumnConstraints rightFiller = new ColumnConstraints(); 
rightFiller.setHgrow(Priority.ALWAYS); // Fills the space left on the right side 
topGrid.getColumnConstraints().addAll(leftFiller, new ColumnConstraints(), 
    new ColumnConstraints(), rightFiller); 

topGrid.add(sloganLbl, 1, 0); 
topGrid.add(signUpBtn, 2, 0); 

Dieser Ausschnitt wird ein GridPane mit 4 Spalten erstellen. Die erste und die letzte wächst, wenn die GridPane wird in der Größe geändert, die 2 inneren Spalten halten die Label und die Button. Bitte beachten Sie, dass die Label und die Button jetzt in der zweiten und dritten Spalte stehen.

+0

Sehr cool @DVarga, hat Ihr Code mein Problem behoben. Vielen Dank! –