0

MVC について読んだことがありますが、Java で Swing を使用してその概念を実装する方法について疑問があります。ここに私が行くものがあります:

モデル: のオブジェクトListOfThingsが含まれています。CollectionThing

コントローラー: 「追加」メソッドでインスタンス化して入力します (内部で新しいを作成し、Controllerに追加します)ListOfThingsThingCollection

ビュー:モデルを表すコンポーネントをListOfThingsPanel含むSwing インターフェース。ThingPanelどちらも伸びJPanelます。リンク先ThingPanelのデータを表示するためのさまざまなコンポーネントが含まれています。Thingリストに新しい (空の) ものを追加するボタンもあります。クリック イベントは、リストに新しい を追加するよう要求するControlleraddThing()メソッドを呼び出します。イベント/リスナーシステムがあり、ビューをいつ更新する必要があるかを知るためにそれをリッスンします。ListOfThingsThingListOfThingsListOfThingsPanel

このようにして、MVCの概念に適切に従っていますか?

更新: 私はまだ Java を学んでいますが、コーディングの経験があり、理論を学び、既製の​​フレームワークを使用する前に自分の方法で試してみたいと思っています。Swing が MVC パターンを実装していることは承知していますが、特定の方法 (View と Controller を組み合わせたもの) でそれを行うことを読んだことがありますが、これは最善ではなく、他の状況では適用できない可能性があります。「Swing MVC」が「MVC」と変わらないこと、またはその違いが根底にあるアイデアの理解に影響を与えないことを確認できるようになるまで、私は少し用心しています。

私にとって重要なことの 1 つは、モデルをビューから実際に分離して、最終的にさまざまなタイプのさまざまなビューを作成できるようにすることです (Swing だけでなく、コンソールや JavaFX への更新など)。ビュー パーツ自体の外側に固有のスイング。

4

1 に答える 1

2

SwingフレームワークはすでにMVCの形式(明示的なモデル; JXyzとUIクラス=コントローラーとビュー)を実装していますが、この厳密な分離がアプリケーションレベルで使用されることはめったになく、かなり奇妙に見えます。

まず、次の設計に従うことをお勧めします。

  • POJOを使用してクライアント側のビジネスロジックを実装する
  • 必要に応じて、POJOをカスタムSwingモデルでラップします(ListModel、TableModel)
  • GUIビルダーを使用してGUIを設計する
  • Mediatorパターンを使用してイベントをリッスンします(JPanelのカスタムサブクラスはその子のイベントをリッスンし、他の子を更新するか、必要に応じて独自のカスタムイベントを発生させます)

さらに一歩進めたい場合は、NetBeansプラットフォームなどのRCPを使用してください(非常に推奨)。

編集:

そして、SwingのMVCを説明する記事は次のとおりです。

http://www.oracle.com/technetwork/java/architecture-142923.html

于 2013-01-29T17:19:57.243 に答える