Listener for a Stage minimizing, maximizing, etc

2019-02-09 08:44发布

问题:

I am just starting my second JavaFX projects, and I need to know when a Stage is being maximized. In Swing, this is fairly simple and can be accomplished by using a WindowListener/Event. However, after searching through JavaFX's Javadoc, I can't seem to find any way of listening to the state of a Stage.

Is there any way to do this?

回答1:

To find out if Stage minimized you can listen to iconified property:

stage.iconifiedProperty().addListener(new ChangeListener<Boolean>() {

    @Override
    public void changed(ObservableValue<? extends Boolean> ov, Boolean t, Boolean t1) {
        System.out.println("minimized:" + t1.booleanValue());
    }
});

Correspondent maximized property is added in the upcoming 8.0 release:

stage.maximizedProperty().addListener(new ChangeListener<Boolean>() {

    @Override
    public void changed(ObservableValue<? extends Boolean> ov, Boolean t, Boolean t1) {
        System.out.println("maximized:" + t1.booleanValue());
    }
});

You can download early access build of JDK 8 (which includes FX8) here: http://www.oracle.com/technetwork/java/javase/downloads/ea-jsp-142245.html