在源代码中,如何在JavaFX控制器之间传递对象?

在源代码中,如何在JavaFX控制器之间传递对象?,java,model-view-controller,javafx,controller,Java,Model View Controller,Javafx,Controller,链接到解释代码的教程。 概述: class ScreensController extends StackPane //keep pane so we can remove add screens on top/bottom 它有一种加载多个屏幕的方法 public boolean loadScreen(String name, String resource) { try { //fxml file FXMLLo

链接到解释代码的教程。

概述:

class ScreensController extends StackPane //keep pane so we can remove add screens on top/bottom
它有一种加载多个屏幕的方法

public boolean loadScreen(String name, String resource) {
    try {                            //fxml file
        FXMLLoader myLoader = new   FXMLLoader(getClass().getResource(resource));
        //System.out.println(resource);
        Parent loadScreen = (Parent) myLoader.load();//class cast to controlled screen

        ControlledScreen myScreenControler = ((ControlledScreen) myLoader.getController());//Returns the controller associated with the root object.
        //inject screen controllers to myscreencontroller
        myScreenControler.setScreenParent(this);// inject screen controllers to each screen here
        addScreen(name, loadScreen);
        return true;
    } catch (Exception e) {
        System.out.println(e.getMessage());
        return false;
    }
}
每个屏幕控制器都有这个对象

ScreensController myController;
以及这种在屏幕之间切换的方法(切换哪个控制器处于控制状态)

这是一个非常简短的概要,我确信我省略了代码的完整部分。 我的问题基本上是我怎样才能把东西(任何东西)从一个屏幕发送到另一个屏幕? 我还希望能够有一个通用模型对象,所有控制器都可以访问和控制它。 如果你看看我的代码 您将看到我正在将所有模型对象放入每个单独控制器的“initialize”方法中。
如果你们能给我一些关于我的代码的建议或反馈,我将非常感激。谢谢。

也许你可以看看。您可能希望使您的模型成为
ScreensController
的属性,然后向
ControlledScreen
接口
setModel(模型模型)添加一个方法用于将模型传递到受控屏幕。然后,模型充当数据的持有者,因此一个控制器可以修改它,另一个控制器将看到更改。除了@James_D所说的,您还可以在两个控制器都继承自的父类中使用static关键字。
@FXML
private void goToScreen2(ActionEvent event){
    myController.setScreen(ScreensFramework.screen2ID);
}

public interface ControlledScreen {

//This method will allow the injection of the Parent ScreenPane
public void setScreenParent(ScreensController screenPage);
}