JavaFX如何并排居中多个组件
JavaFX How to Center Multiple Components side by side
我有 2 个组成部分:Label
和 Button
。我想将它们并排放置并在中心对齐它们。但我没有这样做,因为它们仍然是左对齐而不是中心对齐。
我的代码如下:
Label sloganLbl = new Label("With cost as low as .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 列的总宽度。
如何实现居中对齐?谢谢!
您可以更新 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 个内部列包含 Label
和 Button
.
请注意 Label
和 Button
现在放在第二和第三列。
我有 2 个组成部分:Label
和 Button
。我想将它们并排放置并在中心对齐它们。但我没有这样做,因为它们仍然是左对齐而不是中心对齐。
我的代码如下:
Label sloganLbl = new Label("With cost as low as .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 列的总宽度。
如何实现居中对齐?谢谢!
您可以更新 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 个内部列包含 Label
和 Button
.
请注意 Label
和 Button
现在放在第二和第三列。