1

JTable を使用して、ストリーミング データ フィードから取得したデータを表示します。

各データ ポイントは、関心のあるフィールドを 1 つ持つタイプ X のオブジェクトとして表されます。これを valueField と呼びましょう。私の TableModel インターフェイスの実装には、X.getId() をキーにしたオブジェクト X の HashMap があります。

GUI のユーザーは、関連する列の各セルのカスタム エディターとして JSpinner セットを使用して値を変更できます。

ただし、値は他の行の X.valueField の値にも依存します。

たとえば、私のテーブルは 3 つのオブジェクト X1、X2、および X3 を表しています。それらの関係は次のとおりです。

X1.valueField = X2.valueField + X3.valueField

ユーザーが X1 を変更すると、X2 と X3 のいずれかが (ビジネス ロジックに応じて) 一定に保たれ、もう一方の値が変更されて関係の一貫性が維持されます。同様に、ユーザーは X2 または X3 を変更することもできます。

TableModel の実装でリレーションシップをカプセル化する必要がありますか、それともカスタム テーブル エディターを拡張して、値が変化する方法を考慮に入れる必要がありますか?

どちらのアプローチもうまくいくと思いますが、どちらが正しいアプローチなのかはわかりません。Sun や他のフォーラムのドキュメントでは、カスタム エディターを拡張してフィールドの値を制御することを提案していますが、その値と基になるデータ モデルの他のメンバーとの関係は考慮されていません。

どんな考えでも大歓迎です。

00ラッシュ

4

1 に答える 1

2

ユーザーが実行する mod が永続的である場合、つまり、mod が作成されると、バッキング データが更新されることをお勧めします。その場合、テーブル モデルが変更されたデータを維持するのは正しいことです。一方、ユーザーがデータを操作して完了したらコミットできる編集モードがある場合は、ユーザーがコミットプロセスをトリガーするまでエディターがモッドを維持することをお勧めします。

于 2010-02-17T08:51:58.770 に答える