在源代码中,如何在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);
}