问题
I want to perform some functionality on resize event of form (or Scene
or Stage
whatever it is).
But how can I detect resize event of form in JavaFX?
回答1:
You can listen to the changes of the widthProperty and the heightProperty of the Stage
:
stage.widthProperty().addListener((obs, oldVal, newVal) -> {
// Do whatever you want
});
stage.heightProperty().addListener((obs, oldVal, newVal) -> {
// Do whatever you want
});
Note: To listen to both width and height changes, the same listener can be used really simply:
ChangeListener<Number> stageSizeListener = (observable, oldValue, newValue) ->
System.out.println("Height: " + stage.getHeight() + " Width: " + stage.getWidth());
stage.widthProperty().addListener(stageSizeListener);
stage.heightProperty().addListener(stageSizeListener);
回答2:
Keeping a fixed width to height ratio:
stage.minHeightProperty().bind(stage.widthProperty().multiply(0.5));
stage.maxHeightProperty().bind(stage.widthProperty().multiply(0.5));
来源:https://stackoverflow.com/questions/38216268/how-to-listen-resize-event-of-stage-in-javafx