如何在JavaFX中收听Stage的调整大小事件?

2022-09-02 05:27:36

我想对调整表单大小事件(或它是什么)执行一些功能。SceneStage

但是,如何在JavaFX中检测表单的调整大小事件呢?


答案 1

您可以收听宽度属性高度属性的变化:Stage

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); 

答案 2

保持固定的宽高比:

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