JavaFX如何并排放置多个组件

时间:2017-01-23 10:37:10

标签: java javafx alignment javafx-8 gridpane

我有2个组件:Label& Button。我想把它们并排放在一起。在CENTER中将它们对齐在一起。但我没有这样做,因为它们仍然是左对齐而不是中心。

enter image description here

我的代码如下:

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

问题是topBorder.setCenter(topGrid);无法将内容置于中心位置。似乎topGrid占据了全宽,而不仅仅是2列的总宽度。

如何实现中心对齐?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用左侧和右侧的填充色列更新GridPane

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

此代码段将创建一个包含4列的GridPane。当GridPane调整大小时,第一个和最后一个正在增长,2个内部列包含LabelButton

请注意,LabelButton现已放入第二和第三列。