我希望在表单(或者不管是Scene
还是Stage
)缩放事件上执行一些功能。
但是如何在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);
}
});
同时您可能需要检查新的宽度/高度和旧值以避免重复。