- 型パラメータ:
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 class
DefaultRowSorter.ModelWrapper
は、DefaultRowSorter
でソートされるデータを提供します。クラス javax.swing.RowSorterで宣言されたネストされたクラス/インタフェース
RowSorter.SortKey
-
コンストラクタのサマリー
-
メソッドのサマリー
修飾子と型メソッド説明void
配下のモデルのコンテンツが完全に変更された場合に呼び出されます。int
convertRowIndexToModel
(int index) 配下のモデルに基づいてindex
の位置を返します。int
convertRowIndexToView
(int index) ビューに基づいてindex
の位置を返します。Comparator<?>
getComparator
(int column) 指定された列のComparator
を返します。int
ソート・キーの最大数を返します。final M
getModel()
配下のモデルを返します。int
配下のモデルの行数を返します。protected final DefaultRowSorter.ModelWrapper<M,
I> ソートおよびフィルタの適用対象のデータを提供するモデル・ラッパーを返します。必要に応じてビューに表示しない行を指定するフィルタを返します。List<? extends RowSorter.SortKey>
現在のソート・キーを返します。boolean
配下のモデルの更新時にソートを行う場合はtrue、そうでない場合はfalseを返します。int
ビュー内の行数を返します。boolean
isSortable
(int column) 指定された列がソート可能な場合はtrue、そうでない場合はfalseを返します。void
配下のモデルの構造が完全に変更された場合に呼び出されます。void
rowsDeleted
(int firstRow, int endRow) 配下のモデルの指定された範囲(上限値と下限値を含む)から行が削除された場合に呼び出されます。void
rowsInserted
(int firstRow, int endRow) 配下のモデルの指定された範囲(上限値と下限値を含む)に行が挿入された場合に呼び出されます。void
rowsUpdated
(int firstRow, int endRow) 配下のモデルの指定された範囲(上限値と下限値を含む)で行が変更された場合に呼び出されます。void
rowsUpdated
(int firstRow, int endRow, int column) 配下のモデルの指定された範囲で行内の列が更新された場合に呼び出されます。void
setComparator
(int column, Comparator<?> comparator) 指定された列のソート時に使用するComparator
を設定します。void
setMaxSortKeys
(int max) ソート・キーの最大数を設定します。protected final void
setModelWrapper
(DefaultRowSorter.ModelWrapper<M, I> modelWrapper) ソートおよびフィルタの適用対象のデータを提供するモデル・ラッパーを設定します。void
setRowFilter
(RowFilter<? super M, ? super I> filter) 必要に応じてビューに表示しない行を指定するフィルタを設定します。void
setSortable
(int column, boolean sortable) 指定された列をソート可能にするかどうかを設定します。void
setSortKeys
(List<? extends RowSorter.SortKey> sortKeys) ソート・キーを設定します。void
setSortsOnUpdates
(boolean sortsOnUpdates) trueの場合、配下のモデルが更新された(rowsUpdated
が呼び出された)ときにソートを行うことを指定します。void
sort()
現在ソート中の列のソート・キーと、このソーターに関連するフィルタがある場合はそのフィルタに基づいて、ビュー内の行をソートし、フィルタを適用します。void
toggleSortOrder
(int column) 指定された列が第1のソート列であった場合、ソート順序を昇順から降順へ、または降順から昇順へ切り替えます。そうでない場合は、指定の列を第1のソート列(昇順)に変更します。protected boolean
useToString
(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
public final M 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
が配下のモデルの範囲外にある場合
-