|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjavax.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 が呼び出されたときだけチェックされます。ソート不可能とマークされている列でも、ソートキーを直接設定することでソートできます。デフォルトは 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> 内の setSortKeyssortKeys - 新規の SortKeys。
空のリスト (このビューではソートを行わないことを示す) を
指定する場合は null
IllegalArgumentException - sortKeys に、null 値や
モデルの範囲外の列インデックスを持つ値が
ある場合public List<? extends RowSorter.SortKey> getSortKeys()
null でない List が返されます。ソートキーを変更する必要がある場合は、返された List のコピーを作成し、このコピーを変更して作成した新しいリストを使って、setSortKeys を呼び出します。
RowSorter<M> 内の getSortKeyspublic 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> 内の toggleSortOrdercolumn - 配下のモデルに基づいて、
第 1 のソート列にする列のインデックス
IndexOutOfBoundsException - 列が配下のモデルの
範囲外にある場合setSortable(int,boolean),
setMaxSortKeys(int)public int convertRowIndexToView(int index)
index の位置を返します。配下のモデルの座標の行 index の場合、ビューの行インデックスを返します。
RowSorter<M> 内の convertRowIndexToViewindex - 配下のモデルの行インデックス
IndexOutOfBoundsException - index がモデルの範囲外にある場合public int convertRowIndexToModel(int index)
index の位置を返します。ビューの座標の行 index の場合、配下のモデルの行インデックスを返します。
RowSorter<M> 内の convertRowIndexToModelindex - 配下のビューの行インデックス
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 を設定します。これは、ソートをトリガーしません。比較演算子の設定後にソートを行うには、明示的に sort を呼び出す必要があります。
column - 配下のモデルに基づいて、Comparator を使用する列のインデックスcomparator - 使用する Comparator
IndexOutOfBoundsException - columns が配下のモデルの
範囲外にある場合public Comparator<?> getComparator(int column)
Comparator のスタイルを返します。これは、列に Comparateor が指定されていない場合、null を返します。
column - 配下のモデルに基づいて、Comparator を
フェッチする列
Comparator
IndexOutOfBoundsException - 列が配下のモデルの
範囲外にある場合public int getViewRowCount()
RowSorter<M> 内の getViewRowCountRowSorter.getModelRowCount()public int getModelRowCount()
RowSorter<M> 内の getModelRowCountRowSorter.getViewRowCount()public void modelStructureChanged()
TableModel で列数が変更された場合に、このメソッドが呼び出されます。 通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。
RowSorter<M> 内の modelStructureChangedpublic void allRowsChanged()
通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。
RowSorter<M> 内の allRowsChanged
public void rowsInserted(int firstRow,
int endRow)
対象となる範囲のインデックスは、引数で指定します。第 1 の引数は、変更前のモデルを基にしており、変更前のモデルのサイズ以下である必要があります。第 2 の引数は、変更後のモデルを基にしており、変更後のモデルのサイズ未満である必要があります。たとえば 5 行のモデルの末尾に 3 項目を追加する場合、インデックスは 5,7 になります。
通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。
RowSorter<M> 内の rowsInsertedfirstRow - 最初の行endRow - 最後の行
IndexOutOfBoundsException - いずれかの引数が無効である場合、または
firstRow が endRow より大きい場合
public void rowsDeleted(int firstRow,
int endRow)
対象となる範囲のインデックスは、変更前のモデルを表す引数で指定します。たとえば 5 行のモデルの末尾から 3 項目を削除する場合、インデックスは 2,4 になります。
通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。
RowSorter<M> 内の rowsDeletedfirstRow - 最初の行endRow - 最後の行
IndexOutOfBoundsException - どちらかの引数が変更前のモデルの範囲外にある場合、または firstRow のほうが endRow より大きい場合
public void rowsUpdated(int firstRow,
int endRow)
通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。
RowSorter<M> 内の rowsUpdatedfirstRow - 配下のモデルの最初の行endRow - 配下のモデルの最後の行
IndexOutOfBoundsException - どちらかの引数が配下のモデルの範囲外にある場合、または firstRow のほうが endRow より大きい場合
public void rowsUpdated(int firstRow,
int endRow,
int column)
通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。
RowSorter<M> 内の rowsUpdatedfirstRow - 配下のモデルの最初の行endRow - 配下のモデルの最後の行column - 配下のモデルに基づいて、
変更した列
IndexOutOfBoundsException - どちらかの引数が変更後の配下のモデルの範囲外にある場合、firstRow のほうが endRow より大きい場合、または column が配下のモデルの範囲外にある場合
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。