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

时间:2016-07-06 04:19:19

标签: java javafx properties javafx-8 listener

我想在表单的resize事件(或SceneStage)上执行某些功能。

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

2 个答案:

答案 0 :(得分:31)

您可以聆听Stage的{​​{3}}和widthProperty的更改:

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

答案 1 :(得分:3)

保持固定的宽高比:

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