FXMLLoader解释道

时间:2014-07-17 12:03:18

标签: 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 = "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);
    }

}

如何访问ViewContoller参数/方法(例如getPamareter())? 我试图用loader.getController()获取控制器,但它返回一个泛型类型,我应该怎么做,只要它与它有关?我去了oracle文档,但我不太清楚,getController()是否返回了我的ViewController.java实例?

我可以从ViewController访问Model吗? 例如,触发了一个按钮,vieController将更新Model.java中的值。

0 个答案:

没有答案