これはかなり単純な質問のはずですが、インターネット上で適切な答えが見つからないようです。
私はJava FXを調べていて、興味深いと思いますが、プログラムのプレゼンテーションからロジックを分離する方法に満足するのに苦労しています。
注意: これは
、Controller.java ファイル内の Javafx 2.0 ハウツー Application.getParameters() の重複の可能性
が
あります。
バックグラウンド
私が見つけたすべてのチュートリアルには、プレゼンテーションとロジックを適切なMVC方式で接続することになっているコントローラーがあります。ただし、この場合は重要ではないいくつかのものを初期化し、それをControllerに渡したくないので、つまずくのはここです。
質問
コントローラーに何かを渡したいのですか、それとも初期化を担当する必要がありますか (それ自体で、またはその責任を持つ別のオブジェクトをインスタンス化することによって)?
TL;DR
Java FXのコントローラーに何かを渡したいのですが、そうすべきですか、それとも悪い習慣ですか? ものを渡す必要がある場合、どうすればよいですか?
明確にするためのいくつかのコード:
これが私がやりたくない方法です:
メインクラス
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("ChatGUI.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
そしてコントローラの例(コメント付き)
@Override
public void initialize(URL url, ResourceBundle rb) {
//Intialize a bunch of stuff here.
connectionManager = new MyConnectionManager();
}
そして、私がやりたいことのようなもの:
メインクラス
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("ChatGUI.fxml"));
MyConnectionManager connectionManager = new MyConnectionManager();
root.addConnectionManager(connectionManager);
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
そしてコントローラの例(コメント付き)
@Override
public void initialize(URL url, ResourceBundle rb) {
//Intialize a bunch of stuff here.
connectionManager = new MyConnectionManager();
}
public void addConnectionManager(ConnectionManager manager) {
this->myManager = manager;
}
上記の 2 番目の例と同様のことを達成したいのですが、これは可能ですか、それとも MVC パターンについて根本的な誤解がありますか?