我正在开展一个项目,我需要在场景中以两个按钮为中心。 我没有找到任何内置窗格选项来完成工作,所以我不得不使用很多绑定。 这段代码真的很长,我很确定有一种更简单的方法来完成这项工作。 这是一个演示:http://screencast.com/t/pvi5WLko
所以我想知道的是,如果有一种简单的方法可以做同样的事情,最好是内置窗格或其他东西。
无论窗口如何调整大小,我都希望按钮居中。例如:
答案 0 :(得分:1)
最简单的方法是使用VBox:
public void start(final Stage stage) throws Exception {
final Button button0 = new Button("Start learning");
final Button button1 = new Button("Customize");
final VBox box = new VBox();
box.setFillWidth(true);
box.getChildren().setAll(button0, button1);
box.setAlignment(Pos.CENTER);
stage.setScene(new Scene(box));
stage.setWidth(200);
stage.setHeight(100);
stage.show();
}
另一种可能的方法是使用GridPane:
public void start(final Stage stage) throws Exception {
final Button button0 = new Button("Start learning");
final Button button1 = new Button("Customize");
final GridPane cPane = new GridPane();
cPane.getChildren().addAll(button0, button1);
GridPane.setConstraints(button0, 0, 0, 1, 1, HPos.CENTER, VPos.CENTER);
GridPane.setConstraints(button1, 0, 1, 1, 1, HPos.CENTER, VPos.CENTER);
final ColumnConstraints columnn0 = new ColumnConstraints();
columnn0.setPercentWidth(100);
cPane.getColumnConstraints().addAll(columnn0);
final RowConstraints row0 = new RowConstraints(1);
row0.setPercentHeight(50);
final RowConstraints row1 = new RowConstraints(1);
row1.setPercentHeight(50);
cPane.getRowConstraints().addAll(row0, row1);
stage.setScene(new Scene(cPane));
stage.setWidth(200);
stage.setHeight(100);
stage.show();
}
这里的想法是配置网格中的行和列,以使用相应的约束对象填充场景。上面定义了一列和两行。然后,您可以使用GridPane.setConstraints(...)在Grid的单元格内对齐组件。
您可能需要略微更改代码,使顶部按钮与VPos.BOTTOM对齐,将较低的按钮与VPos.TOP对齐,具体取决于您是否希望按钮粘在一起(然后您必须定义边距)当然,对于两者而言。