在初始化之前将对象或String传递给控制器

问题描述 投票:0回答:1

我有一个类,其中包含将根据其修改下一个场景中的标题文本的信息。所以我需要将Object或至少一个String传递给新场景,使用它我将在初始化期间更新下一个场景中的文本。

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是一个抽象类,我无权修改子类中的对象。

java javafx
1个回答
0
投票

Slaw在回答问题的评论中回答。谢谢!我觉得很尴尬,我没有想到这一点。

“您可以在抽象类中公开子类将覆盖的方法;覆盖将调用超级实现以及执行自己的操作。另一个选择是不使用fx:controller而是在加载之前调用FXMLLoader.setController。第三种选择是使用控制器工厂。“

© www.soinside.com 2019 - 2024. All rights reserved.