在JavaFX中隐藏舞台时,如何获得?

时间:2019-06-22 13:54:43

标签: java javafx

所以说我在JavaFX中有一个阶段。而不是通过按X关闭按钮来关闭窗口,我只是隐藏窗口或说切换到计算机上的其他应用程序。每当我隐藏窗口或切换到PC的任何其他窗口时,我都希望平台自动关闭。

我尝试了这三种方法,但是所有这些方法仅在我自己关闭窗口时才激活,而在隐藏窗口时才激活。

popupStage.setOnHidden(event -> Console.log("Hidden"));
popupStage.setOnHiding(event -> Console.log("Hidden"));
popupStage.setOnCloseRequest(event -> Console.log("Hidden"));

任何帮助将不胜感激。 谢谢。

1 个答案:

答案 0 :(得分:2)

尝试使用Window对象的focusedProperty(阶段从Window继承此对象)。

您可以在此属性中添加侦听器,以便在用户切换活动窗口后立即得到通知。

import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.stage.Stage;

public class Example extends Application {

    public static void main(String args[]) {
        Application.launch(args);
    }

    @Override
    public void start(Stage stage) {
        stage.focusedProperty().addListener(this::focusChanged);
        stage.setTitle("demo");
        stage.show();
    }

    private void focusChanged(ObservableValue<? extends Boolean> property, Boolean wasFocused, Boolean isFocused) {
        System.out.println("Window changed focus from " + wasFocused + " to " + isFocused);
    }

}