1

MVC アーキテクチャを使用して Swing でアプリケーションを作成しています。しかし、MVC アーキテクチャーでの JTable コンポーネントの使用に関して、いくつかの懸念があります。ポイントは、テーブルに 3 つの列があり、そのセルに定数値が含まれていることです。また、ボタンをクリックして他の列を追加したり、新しく作成されたセルに定数値を計算するために使用される別のボタンを追加したりできます。

これで、定数値を持つ 3 つの列ができたので、これは、この値を JTable に初期化する必要があることを意味します。これは、JTable コンポーネントとその他のコンポーネントを作成した View クラス内でこれらの定数を作成する必要があるように思えます。これらの定数値は Model クラスにも使用する必要があるため、これは悪い考えです。私の代替案は、これらの定数を使用してインターフェイスを作成することでした。

私は MVC プロジェクトの他のいくつかの単純な例を見ていましたが、ビュー クラス内でこの定数を実装または作成する人をまだ見たことがありません。では、DefaultTableModel を拡張したモデル内に MyTableModel クラスを作成するかどうかは疑問ですが、ビュー クラスでモデル クラスを使用することにした場合、「それはわからない」というルールに違反しています。ビューが存在します"?

MVCパターンとJTableコンポーネントを使用して同様のプロジェクトをすでに作成した人はいますか、または「何にもっと注意を払うべきか」、「どこでクラスを作成でき、どこで作成できないか」などの概念に分割できる人はいますか?

Skype や類似のコミュニケーション手段を使っている人はいますか? 退屈だと言っているわけではありません。

4

1 に答える 1

1

JTable がどのように機能するかを調べると、実際には非常に単純です (もちろん、問題を正しく理解していれば)。

異なるテーブル セルに実際の値を表示するには、セルが表示/更新 (再描画) されるたびに、モデルの値に基づいて Swing ビュー コンポーネントを作成/更新するカスタム CellRenderer を指定する必要があります。したがって、テーブル自体は実際の値をどこにも保持/保存しません。テーブル モデルによって提供される値を使用してセルを更新 (再描画) するだけです。このような更新は、セルに何らかの変更が加えられるたびに実行されます: 内部から - モデル値が変更された、または外部から - テーブル コンポーネントのサイズ変更/移動、列のサイズ変更/移動など

そのため、値をテーブル モデルにのみ格納する必要があります (または独自のグローバル モデルに格納し、テーブル ビューとモデルの間のブリッジとしてテーブル モデルを使用するだけです)。

また、テーブル モデルから任意の方法 (定数値、計算値、キャッシュされた値、リモートで読み込まれた値など) で値を提供できます。これは、テーブル ビューには影響しません (非同期の値の読み込みや、デフォルトの Swing コンポーネント モデルにうまく適合しないようなものを作成しない限り)。

于 2013-08-05T13:35:53.843 に答える