簡體   English   中英

JavaFX階段坐標在關閉時更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM