0

我的代码创建了一个窗口,并按照我想要的方式进行了布局……最初。但是,如果我最大化窗口,边框窗格的顶部和底部不会保留在中心。它们飘到左上角和左下角。

我试图禁用最大化窗口选项,但它再次弄乱了页面的外观,顶部和底部部分移动。

这是我的代码:

@Override
public void start(Stage startWindow) {
    startWindow.setTitle("QuizApp");

    BorderPane borderPane = new BorderPane();
    borderPane.setTop(addHorizontalBoxWithMessage());
    borderPane.setCenter(addImageView());
    borderPane.setBottom(addHorizontalBoxWithButton());

    Scene scene = new Scene(borderPane, 750, 663);
    startWindow.setScene(scene);

    scene.getStylesheets().add(StartWindow.class.getResource("application.css").toExternalForm());

    // startWindow.resizableProperty().setValue(Boolean.FALSE);

    startWindow.show();
}

public HBox addHorizontalBoxWithMessage() {
    HBox hBox = new HBox();
    hBox.setId("hBox");
    hBox.setMinWidth(750);
    hBox.setMinHeight(50);
    hBox.setMaxWidth(750);
    hBox.setMaxHeight(50);
    hBox.setPadding(new Insets(0, 10, 0, 10));
    hBox.setSpacing(10);
    hBox.setAlignment(Pos.CENTER);

    Text message = new Text("Welcome to the QuizApp!");
    message.setId("message");

    hBox.getChildren().add(message);

    return hBox;
}

public ImageView addImageView() {
    Image image = new Image(getClass().getResourceAsStream("quiz.jpg"));

    ImageView imageView = new ImageView();
    imageView.setImage(image);
    imageView.setFitWidth(750);
    imageView.setFitHeight(563);

    return imageView;
}

public HBox addHorizontalBoxWithButton() {
    HBox hBox = new HBox();
    hBox.setId("hBox");
    hBox.setMinWidth(750);
    hBox.setMinHeight(50);
    hBox.setMaxWidth(750);
    hBox.setMaxHeight(50);
    hBox.setPadding(new Insets(10, 10, 10, 10));
    hBox.setSpacing(10);
    hBox.setAlignment(Pos.CENTER);

    Button registerButton = new Button("Register");
    registerButton.setPrefSize(100, 30);
    Button loginButton = new Button("Login");
    loginButton.setPrefSize(100, 30);

    hBox.getChildren().add(registerButton);
    hBox.getChildren().add(loginButton);

    return hBox;
}

我昨晚才开始自学 JavaFX,但似乎无法弄清楚我哪里出错了,或者找不到解决问题的方法。

提前感谢您的任何建议。

4

1 回答 1

0

在您的代码中替换: hBox.setMaxWidth(750);

与:hBox.setMaxWidth(Region.USE_COMPUTED_SIZE);

问题是在调整 hbox 的大小后,宽度仍然是 750 像素长

另一个简单的选择是使用 JavaFX Scene Builder 来确定 GUI 组件是如何工作的。

于 2016-03-12T11:48:02.673 回答