クラスDefaultRowSorter<M,I>
- 型パラメータ:
M- モデルのタイプI-RowFilterに渡される識別子のタイプ
- 直系の既知のサブクラス:
TableRowSorter
RowSorterの実装です。 作成時やインストール時以外に、RowSorterと直接やりとりする必要はほとんどありません。 JTableのRowSorterの具象実装については、TableRowSorterを参照してください。
ソートは、現在のSortKeyに基づいて順番に行われます。 2つのオブジェクトが同等である(列のComparatorが0を返す)場合、次のSortKeyが使用されます。 SortKeyが残っていない、または順序がUNSORTEDの場合、モデル内の行の順序が使用されます。
各列のソートは、setComparatorメソッドをにより指定可能なComparatorによって行われます。 Comparatorが指定されていない場合は、配下のオブジェクト上にtoStringを呼び出した結果に対して、Collator.getInstance()から返されるComparatorが使用されます。 Comparatorにnullが渡されることはありません。 null値はnull以外の値の前に検出されたものとして処理されます。2つのnull値は同等と見なされます。
引数を、モデルによって提供されるその他の型にキャストするComparatorを指定した場合、データをソートするとClassCastExceptionがスローされます。
DefaultRowSorterは、ソート機能のほかに、行のフィルタ機能も提供します。 フィルタは、setRowFilterメソッドで指定されたRowFilterによって行われます。 フィルタが指定されていない場合、すべての行が含まれます。
デフォルトでは、行はソートされず(モデルと同様)、すべての列がソート可能です。 デフォルトのComparatorは、TableRowSorterのように、サブクラスにドキュメント化されています。
配下のモデルの構造が変化した場合(modelStructureChangedメソッドが呼び出された場合)、列のComparator、現在のソート順序、および各列がソート可能であるかどうかの設定がリセットされ、デフォルト値に戻ります。 デフォルトのComparatorを検出するには、具象実装(たとえば、TableRowSorter)を参照します。 デフォルトではソートは行われず(モデルと同様)、列はソート可能です。
DefaultRowSorterはabstractクラスです。 具象サブクラスは、setModelWrapperを呼び出して、配下のデータへのアクセスを提供する必要があります。 setModelWrapperメソッドは、コンストラクタの呼出し直後に呼び出す必要があります。可能であれば、サブクラスのコンストラクタ内で呼び出します。 ModelWrapperを指定しないで DefaultRowSorterを使用した場合、結果は保証されません。
DefaultRowSorterには2つの正式な型パラメータがあります。 1つめの型パラメータは、DefaultTableModelなど、モデルのクラスに対応しています。 もう1つの型パラメータは、RowFilterに渡される識別子のクラスに対応しています。 型パラメータの詳細は、TableRowSorterとRowFilterを参照してください。
- 導入されたバージョン:
- 1.6
- 関連項目:
-
ネストされたクラスのサマリー
ネストされたクラス修飾子と型クラス説明protected static classDefaultRowSorter.ModelWrapperは、DefaultRowSorterでソートされるデータを提供します。クラスjavax.swing.RowSorterで宣言されたネストされたクラス/インタフェース
RowSorter.SortKey -
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明void配下のモデルのコンテンツが完全に変更された場合に呼び出されます。intconvertRowIndexToModel(int index) 配下のモデルに基づいてindexの位置を返します。intconvertRowIndexToView(int index) ビューに基づいてindexの位置を返します。Comparator<?> getComparator(int column) 指定された列のComparatorを返します。intソート・キーの最大数を返します。final MgetModel()配下のモデルを返します。int配下のモデルの行数を返します。protected final DefaultRowSorter.ModelWrapper<M, I> ソートおよびフィルタの適用対象のデータを提供するモデル・ラッパーを返します。必要に応じてビューに表示しない行を指定するフィルタを返します。List<? extends RowSorter.SortKey> 現在のソート・キーを返します。boolean配下のモデルの更新時にソートを行う場合はtrue、そうでない場合はfalseを返します。intビュー内の行数を返します。booleanisSortable(int column) 指定された列がソート可能な場合はtrue、そうでない場合はfalseを返します。void配下のモデルの構造が完全に変更された場合に呼び出されます。voidrowsDeleted(int firstRow, int endRow) 配下のモデルの指定された範囲(上限値と下限値を含む)から行が削除された場合に呼び出されます。voidrowsInserted(int firstRow, int endRow) 配下のモデルの指定された範囲(上限値と下限値を含む)に行が挿入された場合に呼び出されます。voidrowsUpdated(int firstRow, int endRow) 配下のモデルの指定された範囲(上限値と下限値を含む)で行が変更された場合に呼び出されます。voidrowsUpdated(int firstRow, int endRow, int column) 配下のモデルの指定された範囲で行内の列が更新された場合に呼び出されます。voidsetComparator(int column, Comparator<?> comparator) 指定された列のソート時に使用するComparatorを設定します。voidsetMaxSortKeys(int max) ソート・キーの最大数を設定します。protected final voidsetModelWrapper(DefaultRowSorter.ModelWrapper<M, I> modelWrapper) ソートおよびフィルタの適用対象のデータを提供するモデル・ラッパーを設定します。voidsetRowFilter(RowFilter<? super M, ? super I> filter) 必要に応じてビューに表示しない行を指定するフィルタを設定します。voidsetSortable(int column, boolean sortable) 指定された列をソート可能にするかどうかを設定します。voidsetSortKeys(List<? extends RowSorter.SortKey> sortKeys) ソート・キーを設定します。voidsetSortsOnUpdates(boolean sortsOnUpdates) trueの場合、配下のモデルが更新された(rowsUpdatedが呼び出された)ときにソートを行うことを指定します。voidsort()現在ソート中の列のソート・キーと、このソーターに関連するフィルタがある場合はそのフィルタに基づいて、ビュー内の行をソートし、フィルタを適用します。voidtoggleSortOrder(int column) 指定された列が第1のソート列であった場合、ソート順序を昇順から降順へ、または降順から昇順へ切り替えます。そうでない場合は、指定の列を第1のソート列(昇順)に変更します。protected booleanuseToString(int column) ソート時に比較を行う前に、値を文字列に変換するかどうかを返します。クラスjavax.swing.RowSorterで宣言されたメソッド
addRowSorterListener, fireRowSorterChanged, fireSortOrderChanged, removeRowSorterListener
-
コンストラクタの詳細
-
DefaultRowSorter
public DefaultRowSorter()空のDefaultRowSorterを作成します。
-
-
メソッドの詳細
-
setModelWrapper
protected final void setModelWrapper(DefaultRowSorter.ModelWrapper<M, I> modelWrapper) ソートおよびフィルタの適用対象のデータを提供するモデル・ラッパーを設定します。- パラメータ:
modelWrapper- ソートおよびフィルタの適用対象のデータを提供するモデル・ラッパー- スロー:
IllegalArgumentException-modelWrapperがnullである場合
-
getModelWrapper
protected final DefaultRowSorter.ModelWrapper<M,I> getModelWrapper()ソートおよびフィルタの適用対象のデータを提供するモデル・ラッパーを返します。- 戻り値:
- ソートおよびフィルタの適用対象のデータを提供するモデル・ラッパー
-
getModel
-
setSortable
public void setSortable(int column, boolean sortable) 指定された列をソート可能にするかどうかを設定します。 指定された値は、toggleSortOrderが呼び出されたときだけチェックされます。 ソート不可能とマークされている列でも、ソート・キーを直接設定することでソートできます。 デフォルトは、trueです。- パラメータ:
column- 配下のモデルに基づいて、ソートを有効または無効にする列sortable- 指定された列がソート可能であるかどうか- スロー:
IndexOutOfBoundsException-columnがモデルの範囲外である場合- 関連項目:
-
isSortable
public boolean isSortable(int column) 指定された列がソート可能な場合はtrue、そうでない場合はfalseを返します。- パラメータ:
column- 配下のモデルに基づいて、ソートを調べる列- 戻り値:
- 列がソート可能な場合はtrue
- スロー:
IndexOutOfBoundsException- columnが配下のモデルの範囲外である場合
-
setSortKeys
public void setSortKeys(List<? extends RowSorter.SortKey> sortKeys) ソート・キーを設定します。 これにより、指定されたListのコピーが作成されます。その後、指定されたListに変更を加えても、このDefaultRowSorterに影響はありません。 ソート・キーが変更された場合、これがソートをトリガーします。- 定義:
setSortKeys、クラスRowSorter<M>- パラメータ:
sortKeys- 新規のSortKeys。空のリスト(このビューではソートを行わないことを示す)を指定する場合はnull- スロー:
IllegalArgumentException-sortKeysに、null値やモデルの範囲外の列インデックスを持つ値がある場合
-
getSortKeys
public List<? extends RowSorter.SortKey> getSortKeys()現在のソート・キーを返します。 変更不可能なnon-null Listが返されます。 ソート・キーを変更する必要がある場合は、返されたListのコピーを作成し、このコピーを変更して作成した新しいリストを使って、setSortKeysを呼び出します。- 定義:
getSortKeys、クラスRowSorter<M>- 戻り値:
- 現在のソート順序
-
setMaxSortKeys
public void setMaxSortKeys(int max) ソート・キーの最大数を設定します。 ソート・キーの数により、ソート時に同じ値がどのように処理されるかが決定されます。 たとえば、表の行のソーターを作成し、その上でsetMaxSortKeys(2)を呼び出すとします。 ユーザーが列1のヘッダーをクリックすると、列1の項目に基づいて表の行がソートされます。 次に、ユーザーが列2のヘッダーをクリックすると、列2の項目に基づいて表がソートされます。列2に同じ値の項目がある場合、これらの行の順序は列1の項目に基づいて決定されます。 この場合、行は列2を最優先にソートされ、列1を次に優先してソートされると言えます。 ユーザーが列3のヘッダーをクリックすると、項目は列3の項目を最優先にソートされ、列2を次に優先してソートされます。setMaxSortKeysにより、ソート・キーの最大数は2に設定されているので、ソート順序は列1には影響されなくなります。ソート・キーの最大数は、
toggleSortOrderによって適用されます。setSortKeysを直接呼び出すと、より多くのソート・キーを指定でき、これらのキーはすべて受け付けられます。 ただし、その後toggleSortOrderが呼び出されると、ソート・キーの最大数が適用されます。 デフォルト値は3です。- パラメータ:
max- ソート・キーの最大数- スロー:
IllegalArgumentException-maxが1未満の場合
-
getMaxSortKeys
public int getMaxSortKeys()ソート・キーの最大数を返します。- 戻り値:
- ソート・キーの最大数
-
setSortsOnUpdates
public void setSortsOnUpdates(boolean sortsOnUpdates) trueの場合、配下のモデルが更新された(rowsUpdatedが呼び出された)ときにソートを行うことを指定します。 たとえば、この値がtrueの場合、ユーザーがエントリを編集すると、ビュー内の項目の位置が変更されることがあります。 デフォルトは、falseです。- パラメータ:
sortsOnUpdates- 更新イベントの発生時にソートを行うかどうか
-
getSortsOnUpdates
public boolean getSortsOnUpdates()配下のモデルの更新時にソートを行う場合はtrue、そうでない場合はfalseを返します。- 戻り値:
- モデルの更新時にソートを行うかどうか
-
setRowFilter
必要に応じてビューに表示しない行を指定するフィルタを設定します。 フィルタは、ソートの前に適用されます。 値nullは、モデルのすべての値を使用することを示します。RowFilterのincludeメソッドが、配下のモデルをラップするEntryに渡されます。Entry内の列数は、ModelWrapper内の列数に対応しています。 また、識別子もModelWrapperと共通です。このメソッドは、ソートをトリガーします。
- パラメータ:
filter- 使用するエントリを決定するために使用するフィルタ
-
getRowFilter
-
toggleSortOrder
public void toggleSortOrder(int column) 指定された列が第1のソート列であった場合、ソート順序を昇順から降順へ、または降順から昇順へ切り替えます。そうでない場合は、指定の列を第1のソート列(昇順)に変更します。 指定された列がソート可能でない場合、このメソッドは何の影響も及ぼしません。- 定義:
toggleSortOrder、クラスRowSorter<M>- パラメータ:
column- 配下のモデルに基づいて、第1のソート列にする列のインデックス- スロー:
IndexOutOfBoundsException- columnが配下のモデルの範囲外である場合- 関連項目:
-
convertRowIndexToView
public int convertRowIndexToView(int index) ビューに基づいてindexの位置を返します。 配下のモデルの座標の行indexに対応する、ビューの行インデックスを返します。- 定義:
convertRowIndexToView、クラスRowSorter<M>- パラメータ:
index- 配下のモデルの行インデックス- 戻り値:
- ビューの行インデックス。インデックスがビューの範囲外にある場合は -1
- スロー:
IndexOutOfBoundsException-indexがモデルの範囲外である場合
-
convertRowIndexToModel
public int convertRowIndexToModel(int index) 配下のモデルに基づいてindexの位置を返します。 ビューの座標の行indexに対応する、配下のモデルの行インデックスを返します。- 定義:
convertRowIndexToModel、クラスRowSorter<M>- パラメータ:
index- 配下のビューの行インデックス- 戻り値:
- ビューの行インデックス
- スロー:
IndexOutOfBoundsException-indexがビューの範囲外にある場合
-
sort
public void sort()現在ソート中の列のソート・キーと、このソーターに関連するフィルタがある場合はそのフィルタに基づいて、ビュー内の行をソートし、フィルタを適用します。 モデルの場合と同様に、空のsortKeysリストは、このビューのソートができないことを示します。- 関連項目:
-
useToString
protected boolean useToString(int column) ソート時に比較を行う前に、値を文字列に変換するかどうかを返します。 trueの場合はModelWrapper.getStringValueAtを使用し、そうでない場合はModelWrapper.getValueAtを使用します。ModelWrapper実装内でこの値を受け取る、TableRowSorterなどのサブクラスに一致します。- パラメータ:
column- 配下のモデルに基づいて、テストする列のインデックス- 戻り値:
- ソート時に比較を行う前に値を文字列に変換する場合はtrue
- スロー:
IndexOutOfBoundsException-columnが有効でない場合
-
setComparator
public void setComparator(int column, Comparator<?> comparator) 指定された列のソート時に使用するComparatorを設定します。 これは、ソートをトリガーしません。 Comparatorの設定後にソートを行うには、明示的にsortを呼び出す必要があります。- パラメータ:
column- 配下のモデルに基づいて、Comparatorを使用する列のインデックスcomparator- 使用するComparator- スロー:
IndexOutOfBoundsException-columnが配下のモデルの範囲外である場合
-
getComparator
public Comparator<?> getComparator(int column) 指定された列のComparatorを返します。 これは、列にComparatorが指定されていない場合、nullを返します。- パラメータ:
column- 配下のモデルに基づいて、Comparatorをフェッチする列- 戻り値:
- 指定された列の
Comparator - スロー:
IndexOutOfBoundsException- columnが配下のモデルの範囲外である場合
-
getViewRowCount
public int getViewRowCount()ビュー内の行数を返します。 コンテンツにフィルタが適用されている場合、この値が配下のモデルの行数と一致しない可能性があります。- 定義:
getViewRowCount、クラスRowSorter<M>- 戻り値:
- ビュー内の行数
- 関連項目:
-
getModelRowCount
public int getModelRowCount()配下のモデルの行数を返します。- 定義:
getModelRowCount、クラスRowSorter<M>- 戻り値:
- 配下のモデルの行数
- 関連項目:
-
modelStructureChanged
public void modelStructureChanged()配下のモデルの構造が完全に変更された場合に呼び出されます。 たとえば、TableModelで列数が変更された場合に、このメソッドが呼び出されます。通常、ユーザーがこのメソッドを呼び出すことはありません。 このメソッドは、ビュー・クラスから呼び出せるようにpublicになっています。
- 定義:
modelStructureChanged、クラスRowSorter<M>
-
allRowsChanged
public void allRowsChanged()配下のモデルのコンテンツが完全に変更された場合に呼び出されます。 変更されたのはコンテンツだけであり、テーブルの構造は変わりません。 これは、通常、その他のメソッドでは指定できないような過度の変更があった場合に送信されます。通常、ユーザーがこのメソッドを呼び出すことはありません。 このメソッドは、ビュー・クラスから呼び出せるようにpublicになっています。
- 定義:
allRowsChanged、クラスRowSorter<M>
-
rowsInserted
public void rowsInserted(int firstRow, int endRow) 配下のモデルの指定された範囲(上限値と下限値を含む)に行が挿入された場合に呼び出されます。対象となる範囲のインデックスは、引数で指定します。 第1の引数は、変更前のモデルを基にしており、変更前のモデルのサイズ以下である必要があります。 第2の引数は、変更後のモデルを基にしており、変更後のモデルのサイズ未満である必要があります。 たとえば5行のモデルの末尾に3項目を追加する場合、インデックスは5,7になります。
通常、ユーザーがこのメソッドを呼び出すことはありません。 このメソッドは、ビュー・クラスから呼び出せるようにpublicになっています。
- 定義:
rowsInserted、クラスRowSorter<M>- パラメータ:
firstRow- 最初の行endRow- 最後の行- スロー:
IndexOutOfBoundsException- いずれかの引数が無効である場合、またはfirstRowのほうがendRowよりも大きい場合
-
rowsDeleted
public void rowsDeleted(int firstRow, int endRow) 配下のモデルの指定された範囲(上限値と下限値を含む)から行が削除された場合に呼び出されます。対象となる範囲のインデックスは、変更前のモデルを表す引数で指定します。 たとえば5行のモデルの末尾から3項目を削除する場合、インデックスは2,4になります。
通常、ユーザーがこのメソッドを呼び出すことはありません。 このメソッドは、ビュー・クラスから呼び出せるようにpublicになっています。
- 定義:
rowsDeleted、クラスRowSorter<M>- パラメータ:
firstRow- 最初の行endRow- 最後の行- スロー:
IndexOutOfBoundsException- どちらかの引数が変更前のモデルの範囲外にある場合、またはfirstRowのほうがendRowより大きい場合
-
rowsUpdated
public void rowsUpdated(int firstRow, int endRow) 配下のモデルの指定された範囲(上限値と下限値を含む)で行が変更された場合に呼び出されます。通常、ユーザーがこのメソッドを呼び出すことはありません。 このメソッドは、ビュー・クラスから呼び出せるようにpublicになっています。
- 定義:
rowsUpdated、クラスRowSorter<M>- パラメータ:
firstRow- 配下のモデルの最初の行endRow- 配下のモデルの最後の行- スロー:
IndexOutOfBoundsException- どちらかの引数が配下のモデルの範囲外にある場合、またはfirstRowのほうがendRowより大きい場合
-
rowsUpdated
public void rowsUpdated(int firstRow, int endRow, int column) 配下のモデルの指定された範囲で行内の列が更新された場合に呼び出されます。通常、ユーザーがこのメソッドを呼び出すことはありません。 このメソッドは、ビュー・クラスから呼び出せるようにpublicになっています。
- 定義:
rowsUpdated、クラスRowSorter<M>- パラメータ:
firstRow- 配下のモデルの最初の行endRow- 配下のモデルの最後の行column- 配下のモデルで変更された列- スロー:
IndexOutOfBoundsException- どちらかの引数が変更後の配下のモデルの範囲外にある場合、firstRowのほうがendRowより大きい場合、またはcolumnが配下のモデルの範囲外にある場合
-