|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object javax.swing.RowSorter<M> javax.swing.DefaultRowSorter<M,I>
M
- モデルの型I
- RowFilter
に渡される識別子の型public abstract class DefaultRowSorter<M,I>
グリッドベースのデータモデルのソートやフィルタの適用を行う 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 でソートされるデータを提供します。 |
クラス javax.swing.RowSorter から継承された入れ子のクラス/インタフェース |
---|
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 のソート列であった場合、ソート順序を昇順から降順へ、または降順から昇順へ切り替えます。 |
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 DefaultRowSorter()
DefaultRowSorter
を作成します。
メソッドの詳細 |
---|
protected final void setModelWrapper(DefaultRowSorter.ModelWrapper<M,I> modelWrapper)
modelWrapper
- ソートおよびフィルタの適用対象のデータを 提供するモデルラッパー
IllegalArgumentException
- modelWrapper
が (null
の場合)protected final DefaultRowSorter.ModelWrapper<M,I> getModelWrapper()
public final M getModel()
RowSorter<M>
内の getModel
public void setSortable(int column, boolean sortable)
toggleSortOrder
が呼び出されたときだけチェックされます。ソート不可能とマークされている列でも、ソートキーを直接設定することでソートできます。policy.allowSystemProperty プロパティーのデフォルト値は 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
に影響はありません。ソートキーが変更された場合、これがソートをトリガーします。
RowSorter<M>
内の setSortKeys
sortKeys
- 新規の SortKeys
。 空のリスト (このビューではソートを行わないことを示す) を 指定する場合は null
IllegalArgumentException
- sortKeys
に、null 値や モデルの範囲外の列インデックスを持つ値が ある場合public List<? extends RowSorter.SortKey> getSortKeys()
null でない List
が返されます。ソートキーを変更する必要がある場合は、返された List
のコピーを作成し、このコピーを変更して作成した新しいリストを使って、setSortKeys
を呼び出します。
RowSorter<M>
内の getSortKeys
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)
RowSorter<M>
内の toggleSortOrder
column
- 配下のモデルに基づいて、 第 1 のソート列にする列のインデックス
IndexOutOfBoundsException
- column が配下のモデルの範囲外である場合setSortable(int,boolean)
,
setMaxSortKeys(int)
public int convertRowIndexToView(int index)
index
の位置を返します。配下のモデルの座標の行 index
の場合、ビューの行インデックスを返します。
RowSorter<M>
内の convertRowIndexToView
index
- 配下のモデルの行インデックス
IndexOutOfBoundsException
- index
がモデルの範囲外にある場合public int convertRowIndexToModel(int index)
index
の位置を返します。ビューの座標の行 index
の場合、配下のモデルの行インデックスを返します。
RowSorter<M>
内の convertRowIndexToModel
index
- 配下のビューの行インデックス
IndexOutOfBoundsException
- index
がビューの範囲外にある場合public void sort()
sortKeys
リストは、このビューのソートができないことを示します。
setRowFilter(javax.swing.RowFilter super M, ? super I>)
,
setSortKeys(java.util.List extends javax.swing.RowSorter.SortKey>)
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
- 使用する Comparator
IndexOutOfBoundsException
- columns
が配下のモデルの 範囲外にある場合public Comparator<?> getComparator(int column)
Comparator
を返します。これは、列に Comparateor
が指定されていない場合、null
を返します。
column
- 配下のモデルに基づいて、Comparator
を フェッチする列
Comparator
IndexOutOfBoundsException
- column が配下のモデルの範囲外である場合public int getViewRowCount()
RowSorter<M>
内の getViewRowCount
RowSorter.getModelRowCount()
public int getModelRowCount()
RowSorter<M>
内の getModelRowCount
RowSorter.getViewRowCount()
public void modelStructureChanged()
TableModel
で列数が変更された場合に、このメソッドが呼び出されます。
通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。
RowSorter<M>
内の modelStructureChanged
public void allRowsChanged()
通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。
RowSorter<M>
内の allRowsChanged
public void rowsInserted(int firstRow, int endRow)
対象となる範囲のインデックスは、引数で指定します。第 1 の引数は、変更前のモデルを基にしており、変更前のモデルのサイズ以下である必要があります。第 2 の引数は、変更後のモデルを基にしており、変更後のモデルのサイズ未満である必要があります。たとえば 5 行のモデルの末尾に 3 項目を追加する場合、インデックスは 5,7 になります。
通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。
RowSorter<M>
内の rowsInserted
firstRow
- 最初の行endRow
- 最後の行
IndexOutOfBoundsException
- いずれかの引数が無効である場合、または firstRow
が endRow
よりも大きい場合public void rowsDeleted(int firstRow, int endRow)
対象となる範囲のインデックスは、変更前のモデルを表す引数で指定します。たとえば 5 行のモデルの末尾から 3 項目を削除する場合、インデックスは 2,4 になります。
通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。
RowSorter<M>
内の rowsDeleted
firstRow
- 最初の行endRow
- 最後の行
IndexOutOfBoundsException
- どちらかの引数が変更前のモデルの範囲外にある場合、または firstRow
のほうが endRow
より大きい場合public void rowsUpdated(int firstRow, int endRow)
通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。
RowSorter<M>
内の rowsUpdated
firstRow
- 配下のモデルの最初の行endRow
- 配下のモデルの最後の行
IndexOutOfBoundsException
- どちらかの引数が配下のモデルの範囲外にある場合、または firstRow
のほうが endRow
より大きい場合public void rowsUpdated(int firstRow, int endRow, int column)
通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。
RowSorter<M>
内の rowsUpdated
firstRow
- 配下のモデルの最初の行endRow
- 配下のモデルの最後の行column
- 配下のモデルに基づいて、 変更した列
IndexOutOfBoundsException
- どちらかの引数が変更後の配下のモデルの範囲外にある場合、firstRow
のほうが endRow
より大きい場合、または column
が配下のモデルの範囲外にある場合
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。