当前位置: 首页 > 知识库问答 >
问题:

JavaFX BorderPane最大化窗口问题

丁茂
2023-03-14

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

我试着禁用最大化窗口选项,但它又一次打乱了页面的外观,顶部和底部都在移动。

这是我的代码:

@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,但似乎无法弄清楚我哪里出了问题,或者找到了解决问题的方法。

提前感谢任何建议。

共有1个答案

危烨煜
2023-03-14

在您的代码中替换:hbox . set maxwidth(750);

with: hBox.setMaxWidth(Region。USE _ COMPUTED _ SIZE);

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

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

 类似资料:
  • 问题内容: 我正在使用Swing制作快速且肮脏的动画。我希望窗口最大化。我怎样才能做到这一点? 问题答案: 前提是您要扩展JFrame:

  • 我想初始化一个窗口为最大化,但我不知道如何做。我在Windows7上使用Python3.3和Tkinter 8.6。我想答案就在这里:http://www.tcl.tk/man/Tcl/Tkcmd/wm.htmam.m8但是我不知道如何将它输入到我的python脚本中 此外,我需要得到窗口的宽度和高度(既是最大化的,如果用户重新缩放它之后),但我想我可以自己找到。

  • 如题,我想在JavaFX中制作window,并使其永久最大化(即全屏)。 这是产生错误的示例代码…嗯,意外行为。 请注意 和 。一切正常,直到...我按 ⊞↓( ),此时我的窗口被调整大小,我无法再次最大化它。我正在Windows 10上运行NetBeans的代码。

  • 本文向大家介绍用js实现最大化和最小化窗口相关面试题,主要包含被问及用js实现最大化和最小化窗口时的应答技巧和注意事项,需要的朋友参考一下 https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API

  • 当用户关闭一个程序时,我想保存一些关于主窗口的信息,以便下次用户打开程序时,窗口具有相同的属性。 这对于窗口是否最大化很容易做到: 得到:舞台。isMaximized() 场景:舞台。setMaximized(布尔最大化) 如果窗口没有最大化,这也很容易做到: 得到:舞台。getX()/stage。getY()/舞台。getWidth()/stage。getHeight() 场景:舞台。setX(

  • 问题内容: 是否可以通过事件监听器访问JFrame对象,以检测用户何时单击窗口的最大化或最小化按钮? 我正在使用JFrame对象,如下所示: 问题答案: 您可以使用WindowStateListener。如何编写窗口侦听器教程演示了如何创建与窗口相关的事件处理程序。