- 型パラメータ:
M
- 配下のモデルのタイプ
- 直系の既知のサブクラス:
DefaultRowSorter
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
のいずれかのメソッドを呼び出します。
- 導入されたバージョン:
- 1.6
- 関連項目:
-
ネストされたクラスのサマリー
ネストされたクラス -
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明void
このRowSorter
に関する通知を受け取るRowSorterListener
を追加します。abstract void
配下のモデルのコンテンツが完全に変更された場合に呼び出されます。abstract int
convertRowIndexToModel
(int index) 配下のモデルに基づいてindex
の位置を返します。abstract int
convertRowIndexToView
(int index) ビューに基づいてindex
の位置を返します。protected void
fireRowSorterChanged
(int[] lastRowIndexToModel) マッピングが変更されたことをリスナーに通知します。protected void
ソート順序が変更されたことをリスナーに通知します。abstract M
getModel()
配下のモデルを返します。abstract int
配下のモデルの行数を返します。abstract List<? extends RowSorter.SortKey>
現在のソート・キーを返します。abstract int
ビュー内の行数を返します。abstract void
配下のモデルの構造が完全に変更された場合に呼び出されます。void
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) 指定された列のソート順序を逆にします。
-
コンストラクタの詳細
-
RowSorter
public RowSorter()RowSorter
を作成します。
-
-
メソッドの詳細
-
getModel
public abstract M getModel()配下のモデルを返します。- 戻り値:
- 配下のモデル
-
toggleSortOrder
public abstract void toggleSortOrder(int column) 指定された列のソート順序を逆にします。 呼び出されたときにこのとおりの動作が得られるかどうかは、サブクラスによって決まります。 通常、指定された列がプライマリのソート列であった場合、ソート順序を昇順から降順へ、または降順から昇順へ切り替えます。そうでない場合は、指定の列をプライマリのソート列(昇順)に変更します。 指定された列がソート可能でない場合、このメソッドは何の影響も及ぼしません。このメソッドによってソート順序が変更され、ソートが行われる場合は、適切な
RowSorterListener
通知が送信されます。- パラメータ:
column
- 配下のモデルに基づいて、ソート順序を切り替える列- throws:
IndexOutOfBoundsException
- columnが配下のモデルの範囲外である場合
-
convertRowIndexToModel
public abstract int convertRowIndexToModel(int index) 配下のモデルに基づいてindex
の位置を返します。 ビューの座標の行index
に対応する、配下のモデルの行インデックスを返します。- パラメータ:
index
- 配下のビューの行インデックス- 戻り値:
- ビューの行インデックス
- throws:
IndexOutOfBoundsException
-index
がビューの範囲外にある場合
-
convertRowIndexToView
public abstract int convertRowIndexToView(int index) ビューに基づいてindex
の位置を返します。 配下のモデルの座標の行index
に対応する、ビューの行インデックスを返します。- パラメータ:
index
- 配下のモデルの行インデックス- 戻り値:
- ビューの行インデックス。インデックスがビューの範囲外にある場合は -1
- throws:
IndexOutOfBoundsException
-index
がモデルの範囲外である場合
-
setSortKeys
public abstract void setSortKeys(List<? extends RowSorter.SortKey> keys) 現在のソート・キーを設定します。- パラメータ:
keys
- 新規のSortKeys
。空のリスト(このビューではソートを行わないことを示す)を指定する場合はnull
-
getSortKeys
public abstract List<? extends RowSorter.SortKey> getSortKeys()現在のソート・キーを返します。 このメソッドはnon-null List
を返します。さらに、変更不可能なList
を返すこともあります。 ソート・キーを変更する必要がある場合は、返されたList
のコピーを作成し、このコピーを変更して作成した新しいリストを使って、setSortKeys
を呼び出します。- 戻り値:
- 現在のソート順序
-
getViewRowCount
public abstract int getViewRowCount()ビュー内の行数を返します。 コンテンツにフィルタが適用されている場合、この値が配下のモデルの行数と一致しない可能性があります。- 戻り値:
- ビュー内の行数
- 関連項目:
-
getModelRowCount
public abstract int getModelRowCount()配下のモデルの行数を返します。- 戻り値:
- 配下のモデルの行数
- 関連項目:
-
modelStructureChanged
public abstract void modelStructureChanged()配下のモデルの構造が完全に変更された場合に呼び出されます。 たとえば、TableModel
で列数が変更された場合に、このメソッドが呼び出されます。通常、ユーザーがこのメソッドを呼び出すことはありません。 このメソッドは、ビュー・クラスから呼び出せるようにpublicになっています。
-
allRowsChanged
public abstract void allRowsChanged()配下のモデルのコンテンツが完全に変更された場合に呼び出されます。 変更されたのはコンテンツだけであり、テーブルの構造は変わりません。 これは、通常、その他のメソッドでは指定できないような過度の変更があった場合に送信されます。通常、ユーザーがこのメソッドを呼び出すことはありません。 このメソッドは、ビュー・クラスから呼び出せるようにpublicになっています。
-
rowsInserted
public abstract void rowsInserted(int firstRow, int endRow) 配下のモデルの指定された範囲(上限値と下限値を含む)に行が挿入された場合に呼び出されます。対象となる範囲のインデックスは、引数で指定します。 第1の引数は、変更前のモデルを基にしており、変更前のモデルのサイズ以下である必要があります。 第2の引数は、変更後のモデルを基にしており、変更後のモデルのサイズ未満である必要があります。 たとえば5行のモデルの末尾に3項目を追加する場合、インデックスは5,7になります。
通常、ユーザーがこのメソッドを呼び出すことはありません。 このメソッドは、ビュー・クラスから呼び出せるようにpublicになっています。
- パラメータ:
firstRow
- 最初の行endRow
- 最後の行- throws:
IndexOutOfBoundsException
- いずれかの引数が無効である場合、またはfirstRow
のほうがendRow
よりも大きい場合
-
rowsDeleted
public abstract void rowsDeleted(int firstRow, int endRow) 配下のモデルの指定された範囲(上限値と下限値を含む)から行が削除された場合に呼び出されます。対象となる範囲のインデックスは、変更前のモデルを表す引数で指定します。 たとえば5行のモデルの末尾から3項目を削除する場合、インデックスは2,4になります。
通常、ユーザーがこのメソッドを呼び出すことはありません。 このメソッドは、ビュー・クラスから呼び出せるようにpublicになっています。
- パラメータ:
firstRow
- 最初の行endRow
- 最後の行- throws:
IndexOutOfBoundsException
- どちらかの引数が変更前のモデルの範囲外にある場合、またはfirstRow
のほうがendRow
より大きい場合
-
rowsUpdated
public abstract void rowsUpdated(int firstRow, int endRow) 配下のモデルの指定された範囲(上限値と下限値を含む)で行が変更された場合に呼び出されます。通常、ユーザーがこのメソッドを呼び出すことはありません。 このメソッドは、ビュー・クラスから呼び出せるようにpublicになっています。
- パラメータ:
firstRow
- 配下のモデルの最初の行endRow
- 配下のモデルの最後の行- throws:
IndexOutOfBoundsException
- どちらかの引数が配下のモデルの範囲外にある場合、またはfirstRow
のほうがendRow
より大きい場合
-
rowsUpdated
public abstract void rowsUpdated(int firstRow, int endRow, int column) 配下のモデルの指定された範囲で行内の列が更新された場合に呼び出されます。通常、ユーザーがこのメソッドを呼び出すことはありません。 このメソッドは、ビュー・クラスから呼び出せるようにpublicになっています。
- パラメータ:
firstRow
- 配下のモデルの最初の行endRow
- 配下のモデルの最後の行column
- 配下のモデルで変更された列- throws:
IndexOutOfBoundsException
- どちらかの引数が変更後の配下のモデルの範囲外にある場合、firstRow
のほうがendRow
より大きい場合、またはcolumn
が配下のモデルの範囲外にある場合
-
addRowSorterListener
public void addRowSorterListener(RowSorterListener l) このRowSorter
に関する通知を受け取るRowSorterListener
を追加します。 同じリスナーを複数追加した場合、複数の通知を受け取ることになります。l
がnull
の場合、何も行われません。- パラメータ:
l
-RowSorterListener
-
removeRowSorterListener
public void removeRowSorterListener(RowSorterListener l) RowSorterListener
を削除します。l
がnull
の場合、何も行われません。- パラメータ:
l
-RowSorterListener
-
fireSortOrderChanged
protected void fireSortOrderChanged()ソート順序が変更されたことをリスナーに通知します。 -
fireRowSorterChanged
protected void fireRowSorterChanged(int[] lastRowIndexToModel) マッピングが変更されたことをリスナーに通知します。- パラメータ:
lastRowIndexToModel
- ソート前のモデル・インデックスからビュー・インデックスへのマッピング。null
も可能
-