【问题标题】:Start the application window maximized in JavaFX FXML not working properly启动在 JavaFX FXML 中最大化的应用程序窗口无法正常工作
【发布时间】:2017-01-12 06:37:31
【问题描述】:

我希望我的 Javafx FXML 应用程序开始最大化,所以我在我的阶段使用了方法 setMaximized(true)

程序以最大化的方式打开没有问题,但问题是在窗口出现之前,在应用程序启动时有一个小黑色区域闪烁半秒。

这是我描述的录音 (gif):

我发现问题出在场景上,因为它试图在其 prefWidth 和 prefHeight 中打开,然后它会按比例放大以适应舞台。 如何解决此问题并让程序像正常程序一样启动?

这是我的 start() 方法:

@Override
public void start(Stage primaryStage) throws Exception{
    Parent root = FXMLLoader.load(getClass().getResource("editor.fxml"));
    primaryStage.setTitle("Simple Text Editor");
    primaryStage.setScene((new Scene(root)));
    primaryStage.setMaximized(true);
    primaryStage.show();
}

【问题讨论】:

  • 如果您构建一个版本 (.exe./.jar) 并运行它会发生什么?如果仍然显示故障,请尝试在新线程中调用“primaryStage.show()”(例如 Platform.runLater())
  • 是的,运行 jar 时也会发生同样的事情。在“Platform.runLater()”中调用“primaryStage.show()”并没有改变任何东西。
  • 注意:添加primaryStage.setResizable(false);,而不是白色和黑色的矩形,它会显示一个突然最大化的小窗口。

标签: java javafx javafx-8 fxml


【解决方案1】:

我发现的唯一解决方法是:

@Override
public void start(Stage primaryStage) throws Exception{
    Parent root = FXMLLoader.load(getClass().getResource("editor.fxml"));
    primaryStage.setTitle("Simple Text Editor");
    primaryStage.setScene(new Scene(root));
    primaryStage.setMinWidth(450);
    primaryStage.setMinHeight(300);

    Screen screen = Screen.getPrimary();
    Rectangle2D bounds = screen.getVisualBounds();
    primaryStage.setWidth(bounds.getWidth());
    primaryStage.setHeight(bounds.getHeight());

    primaryStage.setMaximized(true);
    primaryStage.show();
}

【讨论】:

    猜你喜欢
    • 2021-12-26
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多