Как я могу получить, когда сцена скрыта в JavaFX? - PullRequest
1 голос
/ 22 июня 2019

Скажем, у меня есть этап в JavaFX.Вместо того чтобы закрывать окно нажатием кнопки закрытия X, я просто скрываю окно или говорю переключиться на другое приложение на моем компьютере.Всякий раз, когда я скрываю окно или переключаюсь на любое другое окно моего ПК, я хочу, чтобы сцена автоматически закрывалась.

Я пробовал эти три метода, но все они активируются только тогда, когда я сам закрываю окно, а не когдаспрятать окно

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

Любая помощь будет принята с благодарностью.Спасибо.

1 Ответ

2 голосов
/ 22 июня 2019

Попробуйте использовать focusProperty объекта Window (stage наследует это от 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);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...