|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjavax.swing.RowSorter<M>
javax.swing.DefaultRowSorter<M,Integer>
javax.swing.table.TableRowSorter<M>
M - モデルの型。TableModel の実装である必要があるpublic class TableRowSorter<M extends 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 を返すようにします。これにより、このクラスのパフォーマンスが飛躍的に向上します。
JTable,
RowFilter,
DefaultTableModel,
Collator,
Comparator| 入れ子のクラスの概要 |
|---|
| クラス javax.swing.DefaultRowSorter から継承された入れ子のクラス/インタフェース |
|---|
DefaultRowSorter.ModelWrapper<M,I> |
| クラス javax.swing.RowSorter から継承された入れ子のクラス/インタフェース |
|---|
RowSorter.SortKey |
| コンストラクタの概要 | |
|---|---|
TableRowSorter()
空のモデルで TableRowSorter を作成します。 |
|
TableRowSorter(M model)
model を配下の TableModel として使用して、TableRowSorter を作成します。 |
|
| メソッドの概要 | |
|---|---|
Comparator<?> |
getComparator(int column)
指定された列の Comparator を返します。 |
TableStringConverter |
getStringConverter()
値をモデルから文字列に変換するために使用するオブジェクトを返します。 |
void |
setModel(M model)
この TableRowSorter の配下のモデルとして使用する TableModel を設定します。 |
void |
setStringConverter(TableStringConverter stringConverter)
値をモデルから文字列に変換するために使用するオブジェクトを設定します。 |
protected boolean |
useToString(int column)
ソート時に比較を行う前に、値を文字列に変換するかどうかを返します。 |
| クラス javax.swing.RowSorter から継承されたメソッド |
|---|
addRowSorterListener, fireRowSorterChanged, fireSortOrderChanged, removeRowSorterListener |
| クラス java.lang.Object から継承されたメソッド |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| コンストラクタの詳細 |
|---|
public TableRowSorter()
TableRowSorter を作成します。
public TableRowSorter(M model)
model を配下の TableModel として使用して、TableRowSorter を作成します。
model - 使用する配下の TableModel。 null 値は空のモデルとして扱われる| メソッドの詳細 |
|---|
public void setModel(M model)
TableRowSorter の配下のモデルとして使用する TableModel を設定します。null 値を指定すると、空のモデルを設定することができます。
model - 使用する配下のモデル、または nullpublic void setStringConverter(TableStringConverter stringConverter)
null 以外の値を指定した場合、登録済みの Comparator を持たないオブジェクト値を文字列に変換することができます。
stringConverter - 値をモデルから文字列に変換するために 使用するオブジェクトpublic TableStringConverter getStringConverter()
public Comparator<?> getComparator(int column)
Comparator を返します。setComparator メソッドを使って Comparator を指定していない場合、指定した列の列クラス (TableModel.getColumnClass) に基づいて Comparator が返されます。列クラスが String の場合、Collator.getInstance が返されます。列クラスが Comparable を実装する場合は、compareTo メソッドを呼び出す private の Comparator が返されます。そうでない場合は、Collator.getInstance が返されます。
DefaultRowSorter<M extends TableModel,Integer> 内の getComparatorcolumn - 配下のモデルに基づいて、Comparator を フェッチする列
Comparator
IndexOutOfBoundsException - column が配下のモデルの範囲外である場合protected boolean useToString(int column)
ModelWrapper.getStringValueAt を使用し、そうでない場合は ModelWrapper.getValueAt を使用します。ModelWrapper 実装内でこの値を受け取る、TableRowSorter などのサブクラスに一致します。
DefaultRowSorter<M extends TableModel,Integer> 内の useToStringcolumn - 配下のモデルに基づいて、テストする列のインデックス
IndexOutOfBoundsException - column が有効でない場合
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。