M - 配下のモデルのタイプpublic abstract class RowSorter<M> extends Object
RowSorterは、ソートとフィルタの基盤を提供します。 作成時やインストール時以外に、RowSorterと直接やりとりする必要はほとんどありません。 JTableのRowSorterの具象実装については、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の具象実装は、TableModel、ListModelなどのモデルを参照する必要があります。 JTableやJListなどのビュー・クラスも、モデルを参照します。 順序の依存性を回避するため、RowSorter実装がモデル上にリスナーをインストールしないようにしてください。 モデルが変更されると、ビュー・クラスがRowSorterを呼び出します。 たとえば、TableModel JTableで行が更新された場合、rowsUpdatedが呼び出されます。 モデルが変更されると、ビューは、modelStructureChanged、allRowsChanged、rowsInserted、rowsDeleted、rowsUpdatedのいずれかのメソッドを呼び出します。 
TableRowSorter| 修飾子と型 | クラス | 説明 | 
|---|---|---|
| static class  | RowSorter.SortKey | SortKeyは、特定の列のソート順序を記述します。 | 
| コンストラクタ | 説明 | 
|---|---|
| RowSorter() | RowSorterを作成します。 | 
| 修飾子と型 | メソッド | 説明 | 
|---|---|---|
| void | addRowSorterListener(RowSorterListener l) | この RowSorterに関する通知を受け取るRowSorterListenerを追加します。 | 
| abstract void | allRowsChanged() | 配下のモデルのコンテンツが完全に変更された場合に呼び出されます。 | 
| abstract int | convertRowIndexToModel(int index) | 配下のモデルに基づいて indexの位置を返します。 | 
| abstract int | convertRowIndexToView(int index) | ビューに基づいて indexの位置を返します。 | 
| protected void | fireRowSorterChanged(int[] lastRowIndexToModel) | マッピングが変更されたことをリスナーに通知します。 | 
| protected void | fireSortOrderChanged() | ソート順序が変更されたことをリスナーに通知します。 | 
| abstract M | getModel() | 配下のモデルを返します。 | 
| abstract int | getModelRowCount() | 配下のモデルの行数を返します。 | 
| abstract List<? extends RowSorter.SortKey> | getSortKeys() | 現在のソート・キーを返します。 | 
| abstract int | getViewRowCount() | ビュー内の行数を返します。 | 
| abstract void | modelStructureChanged() | 配下のモデルの構造が完全に変更された場合に呼び出されます。 | 
| void | removeRowSorterListener(RowSorterListener l) | RowSorterListenerを削除します。 | 
| abstract void | rowsDeleted(int firstRow, int endRow) | 配下のモデルの指定された範囲(上限値と下限値を含む)から行が削除された場合に呼び出されます。 | 
| abstract void | rowsInserted(int firstRow, int endRow) | 配下のモデルの指定された範囲(上限値と下限値を含む)に行が挿入された場合に呼び出されます。 | 
| abstract void | rowsUpdated(int firstRow, int endRow) | 配下のモデルの指定された範囲(上限値と下限値を含む)で行が変更された場合に呼び出されます。 | 
| abstract void | rowsUpdated(int firstRow, int endRow, int column) | 配下のモデルの指定された範囲で行内の列が更新された場合に呼び出されます。 | 
| abstract void | setSortKeys(List<? extends RowSorter.SortKey> keys) | 現在のソート・キーを設定します。 | 
| abstract void | toggleSortOrder(int column) | 指定された列のソート順序を逆にします。 | 
public abstract M getModel()
public abstract void toggleSortOrder(int column)
 このメソッドによってソート順序が変更され、ソートが行われる場合は、適切なRowSorterListener通知が送信されます。
column - 配下のモデルに基づいて、ソート順序を切り替える列IndexOutOfBoundsException - columnが配下のモデルの範囲外である場合public abstract int convertRowIndexToModel(int index)
indexの位置を返します。 ビューの座標の行indexに対応する、配下のモデルの行インデックスを返します。 index - 配下のビューの行インデックスIndexOutOfBoundsException - indexがビューの範囲外にある場合public abstract int convertRowIndexToView(int index)
indexの位置を返します。 配下のモデルの座標の行indexに対応する、ビューの行インデックスを返します。 index - 配下のモデルの行インデックスIndexOutOfBoundsException - indexがモデルの範囲外である場合public abstract void setSortKeys(List<? extends RowSorter.SortKey> keys)
keys - 新規のSortKeys。空のリスト(このビューではソートを行わないことを示す)を指定する場合はnullpublic abstract List<? extends RowSorter.SortKey> getSortKeys()
non-null Listを返します。さらに、変更不可能なListを返すこともあります。 ソート・キーを変更する必要がある場合は、返されたListのコピーを作成し、このコピーを変更して作成した新しいリストを使って、setSortKeysを呼び出します。 public abstract int getViewRowCount()
getModelRowCount()public abstract int getModelRowCount()
getViewRowCount()public abstract void modelStructureChanged()
TableModelで列数が変更された場合に、このメソッドが呼び出されます。 
 通常、ユーザーがこのメソッドを呼び出すことはありません。 このメソッドは、ビュー・クラスから呼び出せるようにpublicになっています。
public abstract void allRowsChanged()
通常、ユーザーがこのメソッドを呼び出すことはありません。 このメソッドは、ビュー・クラスから呼び出せるようにpublicになっています。
public abstract void rowsInserted(int firstRow,
                                  int endRow)
対象となる範囲のインデックスは、引数で指定します。 第1の引数は、変更前のモデルを基にしており、変更前のモデルのサイズ以下である必要があります。 第2の引数は、変更後のモデルを基にしており、変更後のモデルのサイズ未満である必要があります。 たとえば5行のモデルの末尾に3項目を追加する場合、インデックスは5,7になります。
通常、ユーザーがこのメソッドを呼び出すことはありません。 このメソッドは、ビュー・クラスから呼び出せるようにpublicになっています。
firstRow - 最初の行endRow - 最後の行IndexOutOfBoundsException - いずれかの引数が無効である場合、またはfirstRowのほうがendRowよりも大きい場合public abstract void rowsDeleted(int firstRow,
                                 int endRow)
対象となる範囲のインデックスは、変更前のモデルを表す引数で指定します。 たとえば5行のモデルの末尾から3項目を削除する場合、インデックスは2,4になります。
通常、ユーザーがこのメソッドを呼び出すことはありません。 このメソッドは、ビュー・クラスから呼び出せるようにpublicになっています。
firstRow - 最初の行endRow - 最後の行IndexOutOfBoundsException - どちらかの引数が変更前のモデルの範囲外にある場合、またはfirstRowのほうがendRowより大きい場合public abstract void rowsUpdated(int firstRow,
                                 int endRow)
通常、ユーザーがこのメソッドを呼び出すことはありません。 このメソッドは、ビュー・クラスから呼び出せるようにpublicになっています。
firstRow - 配下のモデルの最初の行endRow - 配下のモデルの最後の行IndexOutOfBoundsException - どちらかの引数が配下のモデルの範囲外にある場合、またはfirstRowのほうがendRowより大きい場合public abstract void rowsUpdated(int firstRow,
                                 int endRow,
                                 int column)
通常、ユーザーがこのメソッドを呼び出すことはありません。 このメソッドは、ビュー・クラスから呼び出せるようにpublicになっています。
firstRow - 配下のモデルの最初の行endRow - 配下のモデルの最後の行column - 配下のモデルで変更された列IndexOutOfBoundsException - どちらかの引数が変更後の配下のモデルの範囲外にある場合、firstRowのほうがendRowより大きい場合、またはcolumnが配下のモデルの範囲外にある場合public void addRowSorterListener(RowSorterListener l)
RowSorterに関する通知を受け取るRowSorterListenerを追加します。 同じリスナーを複数追加した場合、複数の通知を受け取ることになります。 lがnullの場合、何も行われません。 l - RowSorterListenerpublic void removeRowSorterListener(RowSorterListener l)
RowSorterListenerを削除します。 lがnullの場合、何も行われません。 l - RowSorterListenerprotected void fireSortOrderChanged()
protected void fireRowSorterChanged(int[] lastRowIndexToModel)
lastRowIndexToModel - ソート前のモデル・インデックスからビュー・インデックスへのマッピング。nullも可能 バグまたは機能を送信 
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。 
 Copyright © 1993, 2025, Oracle and/or its affiliates.  All rights reserved.  Use is subject to license terms.  Documentation Redistribution Policyも参照してください。