2011-01-30 16 views
1

グリーティング、JTable自動更新ヘルプ

私はDefaultTableModelが私の問題にどのように作用するかを理解しています。 私はJDBC - MySQLを使って自分のデータからのクエリのデータをすでに持っているこのJTableを持っていました。 私は、JTableのindex0が常にプライマリキーを表示するということです。 そして、セルのデータが取り出される最後の2次元オブジェクト配列には常に空の行があります。

今のところ、fireCellUpdated()をトリガするsetValueAtメソッドをモデルに含めました。 これはうまくいきましたが、データがJTableに表示されますが、配列上で変更されるという欠点があります。 どうすればこの問題を解決できますか?

あなたの回答は高く評価されます。

ありがとうございました。

+0

アレイがモデルを駆動しているので、表示が一致するアレイを変更すると、問題はわかりません。 – jzd

+0

配列をチェックすると、そこに変更がありました。しかし、JTableには表示されません。 –

答えて

4

アレイをチェックすると、そこに変更があります。ただし、JTableには表示されません。

アレイを直接更新しないでください。この配列は、モデルを作成するときにDefaultTableModelのデータを設定するために使用されます。 DefaultTableModelは、VectorのVectorにデータを格納するため、すべてのデータがArrayからモデルにコピーされます。その後、すべての更新をTableModelに直接行う必要があります。

+0

すべてのアップデートをアレイに戻す方法はありますか? –

+1

自動ではありません - 手動で行う必要があります。 Camickrによれば、 'DefaultTableModel'が作成されると、配列は実質的に無視されます。配列をデータの実際のソースとして使用する場合は、 'AbstractTableModel'を拡張して独自のテーブルモデルを作成します。それほど難しいことではありません。詳しくは、[このチュートリアル](http://download.oracle.com/javase/tutorial/uiswing/components/table.html#data)を参照してください。 –

+0

私はモデルを改造するつもりです...話題を達成したら、私は更新します。 –

2

私が正しく理解している場合、データモデルには表示されない追加の情報が含まれています。 DefaultTableModelこれは少し厄介かもしれません。代わりに、AbstractTableModelを検討して、データの特定の部分だけをJTableに公開しやすくする必要があります。記事の例は、How to Use Tables: Creating a Table Modelhereです。

+0

私はJTableを改造しようとします。 –