Прослушиватель события отклонения всплывающего окна и возврата основного этапа в фокус

У меня есть основной этап, над которым можно показать всплывающее окно. Когда показывается всплывающее окно, первичный этап блокируется и не реагирует ни на какие действия. Попап пишется следующим образом:

private static Stage chooseBreedStage;
    static {
        chooseBreedStage = new Stage();
        chooseBreedStage.setTitle("Choose breed");
        chooseBreedStage.initOwner(AppKitty.getStage());
        chooseBreedStage.initModality(Modality.WINDOW_MODAL);
        chooseBreedStage.setScene(SceneManager.getInstance().getScene(SceneEnum.CHOOSE_BREED_SCREEN));
    }

    public void showChooseBreedPopup() {
        chooseBreedStage.showAndWait();
    }

Есть ли способ или прослушиватель для обработки события, когда всплывающее окно закрывается, фокус возвращается на основной этап и загружается его файл fxml? Под «файл fxml загружен» я имею в виду, что элементы, аннотированные @FXML в его контроллере, не равны нулю и могут быть изменены


person Keker    schedule 23.11.2020    source источник
comment
не публикуйте вопрос повторно (в частности, не с еще меньшим количеством деталей, как в stackoverflow.com/q/64960577/203657) - вместо этого отредактируйте предыдущий, чтобы сделать его ответственным   -  person kleopatra    schedule 23.11.2020
comment
хорошо, я просто уверен, что этот более понятен, чем предыдущий   -  person Keker    schedule 23.11.2020
comment
затем отредактируйте, чтобы уточнить - повторяю: несколько сообщений с одним и тем же вопросом не вариант   -  person kleopatra    schedule 23.11.2020


Ответы (1)


Изменить Modality.WINDOW_MODEL на APPLICATION_MODEL

private static Stage chooseBreedStage;
static {
    chooseBreedStage = new Stage();
    chooseBreedStage.setTitle("Choose breed");
    chooseBreedStage.initOwner(AppKitty.getStage());
    chooseBreedStage.initModality(Modality.APPLICATION_MODEL);
    chooseBreedStage.setScene(SceneManager.getInstance().getScene(SceneEnum.CHOOSE_BREED_SCREEN));
}

public void showChooseBreedPopup() {
    chooseBreedStage.showAndWait();
}
person Ranjit Vamadevan    schedule 23.11.2020
comment
Спасибо, попробую через 4 часа и вернусь с результатом - person Keker; 23.11.2020
comment
Это не помогает, элементы внутри контроллера владельца пусты, а всплывающее окно видно - person Keker; 23.11.2020
comment
пожалуйста, объясни. - person Ranjit Vamadevan; 24.11.2020
comment
Извините, вы ответили правильно. Моя ошибка заключалась в том, что в какой-то момент я получил объект контроллера с помощью .getConstructor().getInstance() вместо FXMLLoader.getController() - person Keker; 24.11.2020