Передача объекта или строки в контроллер перед инициализацией - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть класс, который содержит информацию, на основе которой будет изменен текст заголовка в следующей сцене. Поэтому мне нужно передать объект или хотя бы строку в новую сцену, используя которую я буду обновлять текст в следующей сцене во время инициализации.

void sceneSwitch(Event event, String fxmlName, Class child){
        String fxmlPath = "gui/resources/fxml/";
        Node node = (Node) event.getSource();
        Stage stage = (Stage) node.getScene().getWindow();

        FXMLLoader sceneLoader = fxmlLoadErrorHandler(fxmlPath + fxmlName, child); //This sets up the FXMLLoader
        Parent newScene = fxmlLoadErrorHandler(sceneLoader); 

        /* The last line above is basically the .load() function, but this already
        launches the Initialize function, in which I need to use 'session' Object
        which I only yet set below via setActive */

        CoreController controller = sceneLoader.getController();
        controller.setActive(session);

        Scene scene = null;
        if(newScene != null) {
            scene = new Scene(newScene);
        }

        stage.setScene(scene);
        stage.show();
    }

Так есть ли для меня способ сделать то, что я пытаюсь здесь? Было бы достаточно просто отправить строку на него. Я думал об определении функции в CoreController, которую я буду запускать, как только я установлю Session до показа сцены, но CoreController является абстрактным классом, и у меня нет доступа к изменению объектов в подклассе.

1 Ответ

0 голосов
/ 02 апреля 2019

Ответ Slaw в комментарии в ответ на вопрос.Спасибо!Я чувствую смущение, я не думал об этом.

"Вы можете представить метод в абстрактном классе, который переопределят подклассы; переопределения будут вызывать супер реализацию, а также делать свое дело. Другойопция не должна использовать fx: controller и вместо этого вызывать FXMLLoader.setController перед загрузкой. Третий вариант - использовать фабрику контроллеров. "

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