启动在 JavaFX FXML 中最大化的应用程序 window 无法正常工作
Start the application window maximized in JavaFX FXML not working properly
我希望我的 Javafx FXML 应用程序以最大化方式启动,所以我在我的阶段使用了方法 setMaximized(true)
。
程序以最大化方式打开没问题,但问题是在 window 出现之前,应用程序启动时有一个小的黑色区域闪烁半秒。
这是我描述的录音 (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();
}
我找到的唯一解决方法是:
@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();
}
我希望我的 Javafx FXML 应用程序以最大化方式启动,所以我在我的阶段使用了方法 setMaximized(true)
。
程序以最大化方式打开没问题,但问题是在 window 出现之前,应用程序启动时有一个小的黑色区域闪烁半秒。
这是我描述的录音 (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();
}
我找到的唯一解决方法是:
@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();
}