M - モデルの型I - RowFilter に渡される識別子の型public abstract class DefaultRowSorter<M,I> extends RowSorter<M>
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) を参照します。デフォルトではソートは行われず (モデルと同様)、列はソート可能です。
配下のモデルの構造が変化した場合 (modelStructureChanged メソッドが呼び出された場合)、列の Comparator、現在のソート順序、および列がソート可能であるかどうかの設定がリセットされ、デフォルト値に戻ります。
DefaultRowSorter は abstract クラスです。具象サブクラスは、setModelWrapper を呼び出して、配下のデータへのアクセスを提供する必要があります。setModelWrapper メソッドは、コンストラクタの呼び出し直後に呼び出す必要があります。可能であればサブクラスのコンストラクタ内で呼び出します。ModelWrapper を指定しないで DefaultRowSorter を使用した場合、結果は保証されません。
DefaultRowSorter には 2 つの正式な型パラメータがあります。1 つめの型パラメータは、DefaultTableModel など、モデルのクラスに対応しています。もう 1 つの型パラメータは、RowFilter に渡される識別子のクラスに対応しています。型パラメータの詳細は、TableRowSorter と RowFilter を参照してください。
TableRowSorter, DefaultTableModel, Collator| 修飾子と型 | クラスと説明 |
|---|---|
protected static class |
DefaultRowSorter.ModelWrapper<M,I>
DefaultRowSorter.ModelWrapper は、DefaultRowSorter でソートされるデータを提供します。 |
RowSorter.SortKey| コンストラクタと説明 |
|---|
DefaultRowSorter()
空の
DefaultRowSorter を作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
void |
allRowsChanged()
配下のモデルのコンテンツが完全に変更された場合に呼び出されます。
|
int |
convertRowIndexToModel(int index)
配下のモデルに基づいて
index の位置を返します。 |
int |
convertRowIndexToView(int index)
ビューに基づいて
index の位置を返します。 |
Comparator<?> |
getComparator(int column)
指定された列の
Comparator を返します。 |
int |
getMaxSortKeys()
ソートキーの最大数を返します。
|
M |
getModel()
配下のモデルを返します。
|
int |
getModelRowCount()
配下のモデルの行数を返します。
|
protected DefaultRowSorter.ModelWrapper<M,I> |
getModelWrapper()
ソートおよびフィルタの適用対象のデータを提供するモデルラッパーを返します。
|
RowFilter<? super M,? super I> |
getRowFilter()
必要に応じてビューに表示しない行を指定するフィルタを返します。
|
List<? extends RowSorter.SortKey> |
getSortKeys()
現在のソートキーを返します。
|
boolean |
getSortsOnUpdates()
配下のモデルの更新時にソートを行う場合は true、そうでない場合は false を返します。
|
int |
getViewRowCount()
ビュー内の行数を返します。
|
boolean |
isSortable(int column)
指定された列がソート可能な場合は true、そうでない場合は false を返します。
|
void |
modelStructureChanged()
配下のモデルの構造が完全に変更された場合に呼び出されます。
|
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 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)
ソート時に比較を行う前に、値を文字列に変換するかどうかを返します。
|
addRowSorterListener, fireRowSorterChanged, fireSortOrderChanged, removeRowSorterListenerprotected final void setModelWrapper(DefaultRowSorter.ModelWrapper<M,I> modelWrapper)
modelWrapper - ソートおよびフィルタの適用対象のデータを提供するモデルラッパーIllegalArgumentException - modelWrapper が null である場合protected final DefaultRowSorter.ModelWrapper<M,I> getModelWrapper()
public void setSortable(int column,
boolean sortable)
toggleSortOrder が呼び出されたときだけチェックされます。ソート不可能とマークされている列でも、ソートキーを直接設定することでソートできます。デフォルトは true です。column - 配下のモデルに基づいて、ソートを有効または無効にする列sortable - 指定された列がソート可能であるかどうかIndexOutOfBoundsException - column がモデルの範囲外である場合toggleSortOrder(int), setSortKeys(java.util.List<? extends javax.swing.RowSorter.SortKey>)public boolean isSortable(int column)
column - 配下のモデルに基づいて、ソートを調べる列IndexOutOfBoundsException - column が配下のモデルの範囲外である場合public void setSortKeys(List<? extends RowSorter.SortKey> sortKeys)
List のコピーが作成されます。その後、指定された List に変更を加えても、この DefaultRowSorter に影響はありません。ソートキーが変更された場合、これがソートをトリガーします。setSortKeys、クラス: RowSorter<M>sortKeys - 新規の SortKeys。空のリスト (このビューではソートを行わないことを示す) を指定する場合は nullIllegalArgumentException - sortKeys に、null 値やモデルの範囲外の列インデックスを持つ値がある場合public List<? extends RowSorter.SortKey> getSortKeys()
non-null List が返されます。ソートキーを変更する必要がある場合は、返された List のコピーを作成し、このコピーを変更して作成した新しいリストを使って、setSortKeys を呼び出します。getSortKeys、クラス: RowSorter<M>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 未満の場合public int getMaxSortKeys()
public void setSortsOnUpdates(boolean sortsOnUpdates)
rowsUpdated が呼び出された) ときにソートを行うことを指定します。たとえば、この値が true の場合、ユーザーがエントリを編集すると、ビュー内の項目の位置が変更されることがあります。デフォルトは false です。sortsOnUpdates - 更新イベントの発生時にソートを行うかどうかpublic boolean getSortsOnUpdates()
public void setRowFilter(RowFilter<? super M,? super I> filter)
null は、モデルのすべての値を使用することを示します。
RowFilter の include メソッドが、配下のモデルをラップする Entry に渡されます。Entry 内の列数は、ModelWrapper 内の列数に対応しています。また、識別子も ModelWrapper と共通です。
このメソッドは、ソートをトリガーします。
filter - 使用するエントリを決定するために使用するフィルタpublic RowFilter<? super M,? super I> getRowFilter()
public void toggleSortOrder(int column)
toggleSortOrder、クラス: RowSorter<M>column - 配下のモデルに基づいて、第 1 のソート列にする列のインデックスIndexOutOfBoundsException - column が配下のモデルの範囲外である場合setSortable(int,boolean), setMaxSortKeys(int)public int convertRowIndexToView(int index)
index の位置を返します。配下のモデルの座標の行 index に対応する、ビューの行インデックスを返します。convertRowIndexToView、クラス: RowSorter<M>index - 配下のモデルの行インデックスIndexOutOfBoundsException - index がモデルの範囲外である場合public int convertRowIndexToModel(int index)
index の位置を返します。ビューの座標の行 index に対応する、配下のモデルの行インデックスを返します。convertRowIndexToModel、クラス: RowSorter<M>index - 配下のビューの行インデックスIndexOutOfBoundsException - index がビューの範囲外にある場合public void sort()
sortKeys リストは、このビューのソートができないことを示します。protected boolean useToString(int column)
ModelWrapper.getStringValueAt を使用し、そうでない場合は ModelWrapper.getValueAt を使用します。ModelWrapper 実装内でこの値を受け取る、TableRowSorter などのサブクラスに一致します。column - 配下のモデルに基づいて、テストする列のインデックスIndexOutOfBoundsException - column が有効でない場合public void setComparator(int column,
Comparator<?> comparator)
Comparator を設定します。これは、ソートをトリガーしません。Comparator の設定後にソートを行うには、明示的に sort を呼び出す必要があります。column - 配下のモデルに基づいて、Comparator を使用する列のインデックスcomparator - 使用する ComparatorIndexOutOfBoundsException - column が配下のモデルの範囲外である場合public Comparator<?> getComparator(int column)
Comparator を返します。これは、列に Comparator が指定されていない場合、null を返します。column - 配下のモデルに基づいて、Comparator をフェッチする列ComparatorIndexOutOfBoundsException - column が配下のモデルの範囲外である場合public int getViewRowCount()
getViewRowCount、クラス: RowSorter<M>RowSorter.getModelRowCount()public int getModelRowCount()
getModelRowCount、クラス: RowSorter<M>RowSorter.getViewRowCount()public void modelStructureChanged()
TableModel で列数が変更された場合に、このメソッドが呼び出されます。
通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。
modelStructureChanged、クラス: RowSorter<M>public void allRowsChanged()
通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。
allRowsChanged、クラス: RowSorter<M>public void rowsInserted(int firstRow,
int endRow)
対象となる範囲のインデックスは、引数で指定します。第 1 の引数は、変更前のモデルを基にしており、変更前のモデルのサイズ以下である必要があります。第 2 の引数は、変更後のモデルを基にしており、変更後のモデルのサイズ未満である必要があります。たとえば 5 行のモデルの末尾に 3 項目を追加する場合、インデックスは 5,7 になります。
通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。
rowsInserted、クラス: RowSorter<M>firstRow - 最初の行endRow - 最後の行IndexOutOfBoundsException - いずれかの引数が無効である場合、または firstRow のほうが endRow よりも大きい場合public void rowsDeleted(int firstRow,
int endRow)
対象となる範囲のインデックスは、変更前のモデルを表す引数で指定します。たとえば 5 行のモデルの末尾から 3 項目を削除する場合、インデックスは 2,4 になります。
通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。
rowsDeleted、クラス: RowSorter<M>firstRow - 最初の行endRow - 最後の行IndexOutOfBoundsException - どちらかの引数が変更前のモデルの範囲外にある場合、または firstRow のほうが endRow より大きい場合public void rowsUpdated(int firstRow,
int endRow)
通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。
rowsUpdated、クラス: RowSorter<M>firstRow - 配下のモデルの最初の行endRow - 配下のモデルの最後の行IndexOutOfBoundsException - どちらかの引数が配下のモデルの範囲外にある場合、または firstRow のほうが endRow より大きい場合public void rowsUpdated(int firstRow,
int endRow,
int column)
通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。
rowsUpdated、クラス: RowSorter<M>firstRow - 配下のモデルの最初の行endRow - 配下のモデルの最後の行column - 配下のモデルで変更された列IndexOutOfBoundsException - どちらかの引数が変更後の配下のモデルの範囲外にある場合、firstRow のほうが endRow より大きい場合、または column が配下のモデルの範囲外にある場合 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.