Как запросить предыдущий параметр (здесь: Scene) и действовать в зависимости от результата?

#java #user-interface #javafx #fxml #scene

#java #пользовательский интерфейс #javafx #fxml #сцена

Вопрос:

В конкретной сцене я хочу спросить, была ли предыдущая сцена X или Y. В зависимости от результата я хочу загрузить либо X.fxml, либо Y.fxml после нажатия кнопки.

Я пытался наследовать мой MainViewController одним методом, но у меня это не получилось. Мой текущий подход просто запрашивает источник (button) и в зависимости от кнопки загружает определенный fxml.

 public class FinishViewController extends MainViewController {

    public void returnFinishHandler(ActionEvent event) throws IOException {


    if (event.getSource() == returnToConfigButton) {
        stage = (Stage) returnToConfigButton.getScene().getWindow();
        root = FXMLLoader.load(getClass().getResource("/view/configurationViewKds.fxml"));

    } else {

        stage = (Stage) finishButton.getScene().getWindow();
        root = FXMLLoader.load(getClass().getResource("/view/updateView.fxml"));
    }

    Scene scene = new Scene(root);
    stage.setScene(scene);
    stage.show();
    }
}
  

В методе я надеюсь запросить предыдущую сцену и действовать в соответствии с результатом, как я описал ранее.
В лучшем случае я получаю какую-то новую перспективу для нового подхода.

Мы ценим вашу помощь.

Комментарии:

1. Почему бы не установить для одного обработчика событий значение finishButton , а для другого — returnToConfigButton ?

Ответ №1:

Вы можете использовать перечисление, которое хранит состояние вашего приложения. Допустим, у вас есть класс с именем, AppManager и внутри него вы создали общедоступное статическое перечисление ApplicationState . Затем внутри вашего finishHandler вы добавляете дополнительный оператор if для проверки текущего состояния приложения из вашего менеджера приложений.