私はjavaFXを使用してMVCコンセプトに苦労しています。 fxmlファイルを使用してjavaFXアプリケーションを構築しています。
各fxmlファイルにはコントローラーが割り当てられていますが、MVCパターンに示されているように、このコントローラーは1つではないと思います。私はそれをfxmlオブジェクト(ボタン、ペインなど)への参照を保持するある種のViewControllerのように考えています。
私の問題は、この「ViewController」と実際の「Controller」の違いはどこにあるのかです。どのオブジェクトが何をすべきか?どこに設定しますか? actionListeners?
MVCの考え方
MVCは、大まかに定義されたパターンであり、MVCの各要素(特にコントローラー)が何を表すのか(しばしば漠然と解釈されます)の可能性があります。 Martin FowlerによるGUIツールキットに関して、MVCアーキテクチャの素晴らしい 議論 があります。
デザインパターンとFXMLについて
JavaFXコアFXMLベースの処理は、完全な開発フレームワークではなく、ツールキットとして構築されています。他のフレームワークをJavaFXとFXML、基盤となるJavaFX/FXML実装、およびそれらのコントローラーの上に重ねることができるという考えは、上位レベルのフレームワークにいかなる種類の議題やアーキテクチャ上の制約もプッシュしないということです。
その結果、中核となるFXMLベースの処理とそのコントローラーとMVCアーキテクチャーとの意図的に緩やかな類似性とマッピングがあります。
詳細については、 JavaFXとMVP –設計パターンのスモール/ を参照してください。
より高いレベルのフレームワークの使用を検討してください
afterburner.fx などの「意見のある」JavaFXフレームワークを採用すると、コントローラーとFXMLを利用しますが、もう少し厳密な構造化フレームワークが提供されます。 Afterburner.fxは、 Model View Presenter(MVP)モデル に従います。 Afterburner.fxは、プレーンコアのJavaFX + FXMLよりも多くの機能と構造を提供しますが、それを使用するために学習する必要があるいくつかの追加のクラスとAPIを追加することにより、最小限の方法で提供します。
カスタム仕立てのパターンでJRebirthを試すことができます:wB-CS-Mvc
これは2レベルのMVCパターンで、最初のMVC(アプリケーションレベル)はCSMで、2番目のパターンはMvc自体(uiレベル)です。
詳細については、JRebirthツアーアプリケーションを実行してください(Java 8が必要です)。
http://apps.jrebirth.org/jaf/3.0.0/JRebirthTour-3.0.0.jar
Java -jar JRebirthTour-3.0.0.jar
デモアプリケーションを実行することもできます。
http://apps.jrebirth.org/demo/8.5.0/JRebirthDemo-8.5.0.jar
Java -jar JRebirthDemo-8.5.0.jar
またはスライドを参照(少し古い): http://fr.slideshare.net/SbastienBordes/javafx-unleashed-with-jrebirth-application-framework