モジュール java.desktop
パッケージ javax.swing

クラスRowSorter<M>

java.lang.Object
javax.swing.RowSorter<M>
型パラメータ:
M - 配下のモデルのタイプ
直系の既知のサブクラス:
DefaultRowSorter

public abstract class RowSorter<M> extends Object
RowSorterは、ソートとフィルタの基盤を提供します。 作成時やインストール時以外に、RowSorterと直接やりとりする必要はほとんどありません。 JTableRowSorterの具象実装については、TableRowSorterを参照してください。

RowSorterの基本機能は、ビュー(JTableなど)の座標系と配下のデータ・ソース(通常はモデル)の座標系の間でマッピングを行うことです。

ビューは、RowSorter上で次のメソッドを呼び出します。

  • toggleSortOrder - 適切なユーザー・ジェスチャが発生してソートがトリガーされたときにビューにより呼び出されます。 たとえば、ユーザーがテーブル内の列ヘッダーをクリックしたときなどに呼び出されます。
  • モデル変更メソッド - 配下のモデルが変更されたときにビューによりモデル変更メソッドが呼び出されます。 イベントの配信順序には依存関係があります。このため、これらのメソッドのいずれかが呼び出されるまで、RowSorterがマッピングを更新しないようにしてください。
ビューはconvertRowIndexToModelメソッド、convertRowIndexToViewメソッド、およびgetViewRowCountメソッドを非常によく使用するので、これらのメソッドは高速である必要があります。

RowSorterは、RowSorterListenerを使って変更の通知を行います。 通知には、次の2種類があります。

  • RowSorterEvent.Type.SORT_ORDER_CHANGED - ソート順序が変更されたことをリスナーに通知します。 通常、このあとに、ソートが変更されたという通知が送信されます。
  • RowSorterEvent.Type.SORTED - RowSorterが管理しているマッピングが変更されたことをリスナーに通知します。
RowSorter実装と配下のモデルのマッピングは、通常、1対1にはなっていませんが、1対1にすることも可能です。 たとえば、ソートを行うデータベースは、バックグラウンド・スレッド上でtoggleSortOrderを呼び出します。このメソッドは、マッピング・メソッドをオーバーライドして、渡された引数を返します。

RowSorterの具象実装は、TableModelListModelなどのモデルを参照する必要があります。 JTableJListなどのビュー・クラスも、モデルを参照します。 順序の依存性を回避するため、RowSorter実装がモデル上にリスナーをインストールしないようにしてください。 モデルが変更されると、ビュー・クラスがRowSorterを呼び出します。 たとえば、TableModel JTableで行が更新された場合、rowsUpdatedが呼び出されます。 モデルが変更されると、ビューは、modelStructureChangedallRowsChangedrowsInsertedrowsDeletedrowsUpdatedのいずれかのメソッドを呼び出します。

導入されたバージョン:
1.6
関連項目: