[英]How to listen resize event of Stage in JavaFX?
我想對表單的調整大小事件(或Scene
或Stage
無論它是什么)執行一些功能。
但是如何在 JavaFX 中檢測表單的調整大小事件?
您可以監聽Stage
的widthProperty
和heightProperty
的變化:
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.