Model view controller FXMLLoader解释

Model view controller FXMLLoader解释,model-view-controller,javafx,fxml,fxmlloader,Model View Controller,Javafx,Fxml,Fxmlloader,我正在使用javafx与FXML的结合。 我想应用MVC模式。为此,我希望我的Model.java类是模型,它启动View.fxml,该视图的控制器是viewController.java 我需要使用Model.java和Controller.java在某个时候进行通信。假设ViewController.java看起来是这样的: public class ViewController implements Initializable { private String parameter

我正在使用javafx与FXML的结合。 我想应用MVC模式。为此,我希望我的Model.java类是模型,它启动View.fxml,该视图的控制器是viewController.java

我需要使用Model.java和Controller.java在某个时候进行通信。假设ViewController.java看起来是这样的:

public class ViewController implements Initializable {

    private String parameter = "hello";
    @FXML
    private Label label;

    @FXML
    private Accordion acccord;

    public String getParemeter() {
        return this.parameter;
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }    

}
ViewController有一个私有字符串和它自己的方法

和Model.java:

public class Model extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        FXMLLoader loader = new FXMLLoader(getClass().getResource("View.fxml") );

        Parent root = loader.load();  // Here the View is loaded and the Contoller is created along.

        loader.getController(); // ?
        //Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

        Scene scene = new Scene(root);

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

    public static void main(String[] args) {
        launch(args);
    }

}
如何访问ViewController参数/方法(例如getPamareter())? 我试图用loader.getController()获取控制器,但它返回一个泛型类型,如果它与此相关,我应该如何处理它?我查阅了oracle文档,但不太清楚getController()是否返回我的ViewController.java实例

如何从ViewController访问模型?
例如触发一个buton,vieController将更新Model.java中的一个值。

只需编写
ViewController=loader.getController()
FXMLLoader
将控制器实例强制转换为指定变量的类型。完美!我认为应该在loader.load()之后调用loader.getController(),否则它将返回null。我想我只需要创建一个setter来将模型的引用传递给视图。非常感谢!