如何在JavaFX中监听Stage的resize事件?

我想在窗体的resize事件(或SceneStage无论它是什么)上执行一些function。

但是如何在JavaFX中检测表单的resize事件?

您可以侦听StagewidthPropertyheightProperty的更改:

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

注意:要同时监听宽度和高度的变化,可以非常简单地使用相同的侦听器:

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