[英]JavaFX stage coordinates update on close
我遇到了一個非常奇怪的行為,我懷疑這是JavaFX 9 API中的錯誤,但是我很謹慎,因為我很可能會丟失某些東西。
MCVE:
public class MainApp extends Application {
private Stage primaryStage;
@Override
public void start(Stage primaryStage) {
this.primaryStage = primaryStage;
double xCord = 200;
double yCord = 200;
double width = 400;
double height = 400;
BorderPane borderPane = new BorderPane(new Button("Button"));
Scene scene = new Scene(borderPane);
primaryStage.setX(xCord);
primaryStage.setY(yCord);
primaryStage.setWidth(width);
primaryStage.setHeight(height);
primaryStage.setScene(scene);
primaryStage.show();
System.out.println(primaryStage.getWidth());
System.out.println(primaryStage.getHeight());
primaryStage.setOnCloseRequest(e -> {
System.out.println(primaryStage.getWidth());
System.out.println(primaryStage.getHeight());
});
}
}
我在Linux(GNOME和FVWM)+ Windows上進行了測試。 問題僅在Linux上存在,即寬度/高度值在關閉操作中發生了變化。 輸出示例:
400.0
400.0
404.0
433.0
我的猜測是窗口裝飾是值的一部分,但僅在第二個塊中。 在應用程序運行期間,不包含它,並且會報告原始設置的值。 在GNOME上,我的更改略有不同(w:0,h:37),這是因為裝飾也有所不同。
我在Java 8上測試了它,沒有任何區別。 Windows似乎也可以按預期工作,兩部分的輸出相同。 我搜索了JDK Bug,但沒有找到此報告。 我希望有人可以確認這是否是預期的行為,或者確實是回歸。
導致我的問題是,除了窗口大小/位置,我無法實現健壯的首選項,因為在Linux上,窗口會逐漸消失。 (可以將場景的寬度/高度用作解決方法,但是仍然很可疑。)
此問題已在Java 10中修復。(其他文本達到30個字符。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.