FXML:如何在调整窗口大小时将按钮保持在中心位置?

时间:2017-12-01 20:28:54

标签: user-interface javafx fxml scenebuilder

我试图在FXML中设计一个UI,部分使用Scene Builder。我使用Anchorpane将所有内容放在场景中。但是,当我将窗口调整到更大的尺寸时,按钮会从中心向左移动。我想确保它们留在页面的中心。这该怎么做? 感谢。

1 个答案:

答案 0 :(得分:2)

简单的方法是使用StackPaneBorderPane。在BorderPane的情况下,您可以使用Pos.CENTER将包含按钮的按钮或容器保持在中心位置。

如果确实需要AnchorPane,您可以在调整大小时使用width和height属性更改侦听器来调整按钮位置。

private AnchorPane anchorPane;
private Button button;

anchorPane.widthProperty().addListener((ObservableValue<? extends Number> observable, Number oldValue, Number newValue) -> {
        button.setLayoutX(newValue.doubleValue()/2 - (button.widthProperty().getValue() / 2));
    });
anchorPane.heightProperty().addListener((ObservableValue<? extends Number> observable, Number oldValue, Number newValue) -> {
        button.setLayoutY(newValue.doubleValue()/2 - (button.heightProperty().getValue() / 2));
    });