クラスTableRowSorter<M extends TableModel>
- 型パラメータ:
M- モデルのタイプ。TableModelの実装である必要があります
TableModelを使ってソートおよびフィルタ機能を提供するRowSorterの実装です。 次に示すのは、JTableにソート機能を追加する例です。
TableModel myModel = createMyTableModel(); JTable table = new JTable(myModel); table.setRowSorter(new TableRowSorter(myModel));このコードは、ユーザーが適切なジェスチャ(列ヘッダーのクリックなど)を実行したときテーブルが視覚的にソートされるように、接続処理を行います。
JTableの行ベースのメソッドとJTableの選択モデルは、ビューを参照しますが、配下のモデルは参照しません。 したがって、2つの間で変換を行う必要があります。 たとえば、myModelの選択を行う場合は、次のようにインデックスを変換する必要があります。
int[] selection = table.getSelectedRows();
for (int i = 0; i < selection.length; i++) {
selection[i] = table.convertRowIndexToModel(selection[i]);
}
座標に基づいたJTable内の行を選択するときと同様に、配下のモデルから反対の処理を行います。
table.setRowSelectionInterval(table.convertRowIndexToView(row),
table.convertRowIndexToView(row));
前の例は、フィルタ機能が有効になっていない場合の例です。 フィルタ機能が有効になっている場合、convertRowIndexToViewは、ビューに表示されない場所に対して -1を返します。
TableRowSorterは、比較の際、Comparatorを使用します。 列に対してComparatorを選択する方法は、次のように定義します。
- 列の
ComparatorがsetComparatorメソッドを使って指定されている場合は、このメソッドを使用します。 getColumnClassから返される列クラスがStringの場合は、Collator.getInstance()から返されるComparatorを使用します。- 列クラスが
Comparableを実装する場合は、compareToメソッドを呼び出すComparatorを使用します。 TableStringConverterが指定されている場合は、これを使って値をStringに変換し、Collator.getInstance()から返されるComparatorを使用します。- それ以外の場合は、オブジェクト上で
toStringを呼び出した結果に対して、Collator.getInstance()から返されるComparatorを使用します。
TableRowSorterは、ソート機能のほかにフィルタ機能も提供します。 フィルタの指定には、setFilterメソッドを使用します。 次に示すのは、文字列「foo」を含む行だけを表示する例です。
TableModel myModel = createMyTableModel();
TableRowSorter sorter = new TableRowSorter(myModel);
sorter.setRowFilter(RowFilter.regexFilter(".*foo.*"));
JTable table = new JTable(myModel);
table.setRowSorter(sorter);
配下のモデルの構造が変化した場合(modelStructureChangedメソッドが呼び出された場合)、列のComparator、現在のソート順序、および各列がソート可能であるかどうかの設定がリセットされ、デフォルト値に戻ります。 デフォルトではソートは行われず(モデルと同様)、列はソート可能です。
TableRowSorterには、仮型パラメータ(モデルの型)が1つあります。 モデルに正確に対応する型を渡すことにより、キャストなしでモデルに基づいてフィルタを適用することができます。 この例についてはRowFilterの説明を参照してください。
警告: DefaultTableModelはObjectの列クラスを返します。 そのため、すべての比較はtoStringを使って行われます。 これは負荷が大きい可能性があります。 列に1つの型(Integerなど)しか含まれない場合は、getColumnClassをオーバーライドして適切なClassを返すようにします。 これにより、このクラスのパフォーマンスが飛躍的に向上します。
- 導入されたバージョン:
- 1.6
- 関連項目:
-
ネストされたクラスのサマリー
クラスDefaultRowSorterで宣言されたネストされたクラス/インタフェース
DefaultRowSorter.ModelWrapper<M,I> 修飾子と型クラス説明protected static classDefaultRowSorter.ModelWrapperは、DefaultRowSorterでソートされるデータを提供します。クラスRowSorterで宣言されたネストされたクラス/インタフェース
RowSorter.SortKey -
コンストラクタのサマリー
コンストラクタコンストラクタ説明空のモデルでTableRowSorterを作成します。TableRowSorter(M model) modelを配下のTableModelとして使用するTableRowSorterを作成します。 -
メソッドのサマリー
修飾子と型メソッド説明Comparator<?> getComparator(int column) 指定された列のComparatorを返します。値をモデルから文字列に変換するために使用するオブジェクトを返します。voidこのTableRowSorterの配下のモデルとして使用するTableModelを設定します。voidsetStringConverter(TableStringConverter stringConverter) 値をモデルから文字列に変換するために使用するオブジェクトを設定します。protected booleanuseToString(int column) ソート時に比較を行う前に、値を文字列に変換するかどうかを返します。クラスで宣言されたメソッド DefaultRowSorter
allRowsChanged, convertRowIndexToModel, convertRowIndexToView, getMaxSortKeys, getModel, getModelRowCount, getModelWrapper, getRowFilter, getSortKeys, getSortsOnUpdates, getViewRowCount, isSortable, modelStructureChanged, rowsDeleted, rowsInserted, rowsUpdated, rowsUpdated, setComparator, setMaxSortKeys, setModelWrapper, setRowFilter, setSortable, setSortKeys, setSortsOnUpdates, sort, toggleSortOrder修飾子と型メソッド説明void配下のモデルのコンテンツが完全に変更された場合に呼び出されます。intconvertRowIndexToModel(int index) 配下のモデルに基づいてindexの位置を返します。intconvertRowIndexToView(int index) ビューに基づいてindexの位置を返します。intソート・キーの最大数を返します。final MgetModel()配下のモデルを返します。int配下のモデルの行数を返します。protected final DefaultRowSorter.ModelWrapper<M, Integer> ソートおよびフィルタの適用対象のデータを提供するモデル・ラッパーを返します。必要に応じてビューに表示しない行を指定するフィルタを返します。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, Integer> modelWrapper) ソートおよびフィルタの適用対象のデータを提供するモデル・ラッパーを設定します。voidsetRowFilter(RowFilter<? super M, ? super Integer> filter) 必要に応じてビューに表示しない行を指定するフィルタを設定します。voidsetSortable(int column, boolean sortable) 指定された列をソート可能にするかどうかを設定します。voidsetSortKeys(List<? extends RowSorter.SortKey> sortKeys) ソート・キーを設定します。voidsetSortsOnUpdates(boolean sortsOnUpdates) trueの場合、配下のモデルが更新された(rowsUpdatedが呼び出された)ときにソートを行うことを指定します。voidsort()現在ソート中の列のソート・キーと、このソーターに関連するフィルタがある場合はそのフィルタに基づいて、ビュー内の行をソートし、フィルタを適用します。voidtoggleSortOrder(int column) 指定された列が第1のソート列であった場合、ソート順序を昇順から降順へ、または降順から昇順へ切り替えます。そうでない場合は、指定の列を第1のソート列(昇順)に変更します。クラスで宣言されたメソッド RowSorter
addRowSorterListener, fireRowSorterChanged, fireSortOrderChanged, removeRowSorterListener修飾子と型メソッド説明voidこのRowSorterに関する通知を受け取るRowSorterListenerを追加します。protected voidfireRowSorterChanged(int[] lastRowIndexToModel) マッピングが変更されたことをリスナーに通知します。protected voidソート順序が変更されたことをリスナーに通知します。voidRowSorterListenerを削除します。クラスオブジェクトで宣言されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait修飾子と型メソッド説明protected Objectclone()このオブジェクトのコピーを作成して、返します。booleanこのオブジェクトと他のオブジェクトが等しいかどうかを示します。protected voidfinalize()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。最終決定は非推奨であり、将来のリリースで削除される可能性があります。final Class<?> getClass()このObjectの実行時クラスを返します。inthashCode()このオブジェクトに対するハッシュ・コード値を返します。final voidnotify()このオブジェクトのモニターで待機中のスレッドを1つ再開します。final voidこのオブジェクトのモニターで待機中のすべてのスレッドを再開します。toString()オブジェクトの文字列表現を返します。final voidwait()現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。final voidwait(long timeoutMillis) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。final voidwait(long timeoutMillis, int nanos) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
-
コンストラクタの詳細
-
TableRowSorter
public TableRowSorter()空のモデルでTableRowSorterを作成します。 -
TableRowSorter
public TableRowSorter(M model) modelを配下のTableModelとして使用するTableRowSorterを作成します。- パラメータ:
model- 使用する配下のTableModel。null値は空のモデルとして扱われる
-
-
メソッドの詳細
-
setModel
public void setModel(M model) このTableRowSorterの配下のモデルとして使用するTableModelを設定します。null値を指定すると、空のモデルを設定できます。- パラメータ:
model使用する配下のモデル、またはnull
-
setStringConverter
public void setStringConverter(TableStringConverter stringConverter) 値をモデルから文字列に変換するために使用するオブジェクトを設定します。null以外の値を指定した場合、登録済みのComparatorを持たないオブジェクト値を文字列に変換できます。- パラメータ:
stringConverter- 値をモデルから文字列に変換するために使用するオブジェクト
-
getStringConverter
public TableStringConverter getStringConverter()値をモデルから文字列に変換するために使用するオブジェクトを返します。- 戻り値:
- 値をモデルから文字列に変換するために使用するオブジェクト
-
getComparator
public Comparator<?> getComparator(int column) 指定された列のComparatorを返します。setComparatorメソッドを使ってComparatorを指定していない場合、指定した列の列クラス(TableModel.getColumnClass)に基づいてComparatorが返されます。 列クラスがStringの場合、Collator.getInstanceが返されます。 列クラスがComparableを実装する場合は、compareToメソッドを呼び出すprivateのComparatorが返されます。 それ以外の場合はCollator.getInstanceが返されます。- オーバーライド:
getComparator、クラスDefaultRowSorter<M extends TableModel, Integer>- パラメータ:
column- 配下のモデルに基づいて、Comparatorをフェッチする列- 戻り値:
- 指定された列の
Comparator - スロー:
IndexOutOfBoundsException- columnが配下のモデルの範囲外である場合
-
useToString
protected boolean useToString(int column) ソート時に比較を行う前に、値を文字列に変換するかどうかを返します。 trueの場合はModelWrapper.getStringValueAtを使用し、そうでない場合はModelWrapper.getValueAtを使用します。ModelWrapper実装内でこの値を受け取る、TableRowSorterなどのサブクラスに一致します。- オーバーライド:
useToString、クラスDefaultRowSorter<M extends TableModel, Integer>- パラメータ:
column- 配下のモデルに基づいて、テストする列のインデックス- 戻り値:
- ソート時に比較を行う前に値を文字列に変換する場合はtrue
- スロー:
IndexOutOfBoundsException-columnが有効でない場合
-