Model view controller FXMLLoader解释
我正在使用javafx与FXML的结合。 我想应用MVC模式。为此,我希望我的Model.java类是模型,它启动View.fxml,该视图的控制器是viewController.java 我需要使用Model.java和Controller.java在某个时候进行通信。假设ViewController.java看起来是这样的: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
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来将模型的引用传递给视图。非常感谢!