簡體   English   中英

如何在 JavaFX 中監聽 Stage 的調整大小事件?

[英]How to listen resize event of Stage in JavaFX?

我想對表單的調整大小事件(或SceneStage無論它是什么)執行一些功能。

但是如何在 JavaFX 中檢測表單的調整大小事件?

您可以監聽StagewidthPropertyheightProperty的變化:

stage.widthProperty().addListener((obs, oldVal, newVal) -> {
     // Do whatever you want
});

stage.heightProperty().addListener((obs, oldVal, newVal) -> {
     // Do whatever you want
});

注意:要監聽寬度和高度的變化,可以非常簡單地使用同一個監聽器:

ChangeListener<Number> stageSizeListener = (observable, oldValue, newValue) ->
    System.out.println("Height: " + stage.getHeight() + " Width: " + stage.getWidth());

stage.widthProperty().addListener(stageSizeListener);
stage.heightProperty().addListener(stageSizeListener); 

保持固定的寬高比:

stage.minHeightProperty().bind(stage.widthProperty().multiply(0.5));
stage.maxHeightProperty().bind(stage.widthProperty().multiply(0.5));

長話短說:

container.widthProperty().addListener(new ChangeListener<Number>() {
        @Override
        public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
            if (newValue.floatValue()!=oldValue.floatValue()) resizeKids(newValue);
        }
    });

此外,您可能希望使用舊值檢查新的寬度/高度以防止重復

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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