FXMLと組み合わせたjavafxを使用しています。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() でコントローラーを取得しようとしましたが、ジェネリック型を返します。何か関係がある場合はどうすればよいですか? オラクルのドキュメントにアクセスしましたが、よくわかりません。 getController() は ViewController.java のインスタンスを返しますか?
ViewController からモデルにアクセスするにはどうすればよいですか? たとえば、ボタンがトリガーされると、vieController は Model.java の値を更新します。