Я заметил следующее поведение JavaFX при реализации приложения JavaFX:
public class Test extends Application {
private static Stage innerStage;
public static void main(String[] args) {
launch(args);
printSize(innerStage, "after closing the window");
}
@Override
public void start(Stage primaryStage) {
primaryStage.setWidth(300);
primaryStage.setHeight(250);
primaryStage.setTitle("Hello World!");
Button btn = new Button();
btn.setText("Say 'Hello World'");
btn.setOnAction(event -> System.out.println("Hello World!"));
StackPane root = new StackPane();
root.getChildren().add(btn);
primaryStage.setScene(new Scene(root, 250, 200));
primaryStage.show();
primaryStage.setResizable(false);
innerStage = primaryStage;
printSize(primaryStage, "at start-up");
}
private static void printSize(Stage stage, String phase) {
System.out.println(String.format("Width %s: %.1f", phase, stage.getWidth()));
System.out.println(String.format("Height %s: %.1f", phase, stage.getHeight()));
}
}
Первый вывод размера рабочей области дает:
Width at start-up: 300.0
Height at start-up: 250.0
, а второй дает:
Width after closing the window: 312.0
Height after closing the window: 284.0
Это происходит на Debian GNU/Linux 9.12 (stretch)
, но не на Windows 10
.
Может ли кто-нибудь объяснить, что вызывает это, и сообщить мне, есть ли обходной путь для этого, например, этап ( window) не меняет размер сам по себе?
Спасибо
последующее редактирование: из того, что я видел, изменение размера происходит сразу после того, как метод start
приложения JavaFX сделано.