1

いくつかのデータ(各行にaStringとa )を表示するために使用したいJTableがあります。Booleanデータは私自身のクラスによって維持されています。データモデルをJTableにバインドして、モデルに追加するとJTableが動的に更新され、モデルから何かを削除すると行がJTableから削除されるようにする方法はありますか?

私は以前にFlexとActionscriptを使用していましたが、これはデータバインディングを使用して非常に簡単に実行できるため、Javaでどのように実行されるのか疑問に思っています。

ありがとう。

4

3 に答える 3

2

データセットにインターフェースを実装させる必要がありTableModelます。そうすれば、それをJTableに適用できます。拡張AbstractTableModelすると、テーブルが処理してビューを更新するいくつかのイベント発生メソッドを継承します。 このチュートリアルを参照してください。のデフォルトの実装でJTableはデータがレンダリングされ、ブール値が見つかった場合はチェックボックスとして表示されることに注意してください。

于 2009-07-09T18:28:31.763 に答える
2

TableModelの実装は単純なケースでは十分簡単ですが、真のバインディングアプローチを検討することをお勧めします(私のお気に入りはGlazed Listsです。これがいかに簡単であるかについては30秒のビデオをご覧ください)。Beans Binding(現在はBetter Beans Binding)にも、役立つ可能性のある監視可能なリストの実装があります(ただし、Glazed Listsアプローチの方がはるかに好きです)

于 2009-07-10T03:40:51.430 に答える
2

JavaJTableチュートリアルJTableAPIドキュメントの両方が、JTableの動作を理解するのに役立つと思われますが、それ以外の場合は、簡単に説明します。

JTableの前提は、TableModelインターフェイスを実装するオブジェクトとペアになっていることです。このオブジェクトは、デフォルトでは。のインスタンスですDefaultTableModel。テーブルモデルオブジェクトは、各列に独自のデータ型(この場合は)を持つ列のリストStringBoolean、テーブルの実際のデータを含む行のリストで構成されます。

JTableがswing描画コードによって描画されるときは常に、次のメソッドを繰り返し呼び出します。

public Object getValueAt(int row, int col)

したがって、テーブルモデルにデータを追加すると、次の画面の更新で期待どおりに(動的に)常にレンダリングされます。

したがって、本当に心配する必要があるのは、オブジェクトからテーブルモデルにデータを取得し、再び元に戻すことだけです。それ以外は、JTableがすべての面倒な作業を処理します。

于 2009-07-09T18:38:24.007 に答える