JavaTM Platform
Standard Ed. 6

javax.swing
クラス RowSorter<M>

java.lang.Object
  上位を拡張 javax.swing.RowSorter<M>
型パラメータ:
M - 配下のモデルのタイプ
直系の既知のサブクラス:
DefaultRowSorter

public abstract class RowSorter<M>
extends Object

RowSorter は、ソートとフィルタの基盤を提供します。作成時やインストール時以外に、RowSorter と直接対話する必要はほとんどありません。JTableRowSorter の具象実装については、TableRowSorter を参照してください。  

RowSorter の基本機能は、ビュー (JTable など) の 2 つの座標系と配下のデータソース (通常はモデル) の座標系のマッピングを行うことです。  

ビューは、RowSorter 上で次のメソッドを呼び出します。

ビューは convertRowIndexToModel メソッド、convertRowIndexToView メソッド、および getViewRowCount メソッドを非常によく使用するので、これらのメソッドは高速である必要があります。  

RowSorterEvent は、RowSorterListener を使って変更の通知を行います。通知には、次の 2 種類があります。

RowSorter 実装と配下のモデルのマッピングは、通常、1 対 1 にはなっていませんが、1 対 1 にすることも可能です。たとえば、ソートを行うデータベースは、バックグラウンドスレッド上で toggleSortOrder を呼び出します。このメソッドは、マッピングメソッドをオーバーライドして、渡された引数を返します。

RowSorter の具象実装は、TableModelListModel などのモデルを参照する必要があります。JTableJList などのビュークラスも、モデルを参照します。順序の依存性を回避するため、RowSorter 実装がモデル上にリスナーをインストールしないようにしてください。モデルが変更されると、ビュークラスが RowSorter を呼び出します。たとえば、TableModel JTable で行が更新された場合、rowsUpdated が呼び出されます。モデルが変更されると、ビューは、modelStructureChangedallRowsChangedrowsInsertedrowsDeletedrowsUpdated のいずれかのメソッドを呼び出します。

導入されたバージョン:
1.6
関連項目:
TableRowSorter

入れ子のクラスの概要
static class RowSorter.SortKey
          SortKey は、特定の列のソート順序を記述します。
 
コンストラクタの概要
RowSorter()
          RowSorter を作成します。
 
メソッドの概要
 void addRowSorterListener(RowSorterListener l)
          この RowSorter に関する通知を受け取る RowSorterListener を追加します。
abstract  void allRowsChanged()
          配下のモデルのコンテンツが完全に変更された場合に呼び出されます。
abstract  int convertRowIndexToModel(int index)
          配下のモデルの index の位置を返します。
abstract  int convertRowIndexToView(int index)
          ビューの index の位置を返します。
protected  void fireRowSorterChanged(int[] lastRowIndexToModel)
          マッピングが変更されたことをリスナーに通知します。
protected  void fireSortOrderChanged()
          ソート順序が変更されたことをリスナーに通知します。
abstract  M getModel()
          配下のモデルを返します。
abstract  int getModelRowCount()
          配下のモデルの行数を返します。
abstract  List<? extends RowSorter.SortKey> getSortKeys()
          現在のソートキーを返します。
abstract  int getViewRowCount()
          ビュー内の行数を返します。
abstract  void modelStructureChanged()
          配下のモデルの構造が完全に変更された場合に呼び出されます。
 void removeRowSorterListener(RowSorterListener l)
          RowSorterListener を削除します。
abstract  void rowsDeleted(int firstRow, int endRow)
          配下のモデルの指定された範囲 (上限値と下限値を含む) から行が削除された場合に呼び出されます。
abstract  void rowsInserted(int firstRow, int endRow)
          配下のモデルの指定された範囲 (上限値と下限値を含む) に行が挿入された場合に呼び出されます。
abstract  void rowsUpdated(int firstRow, int endRow)
          配下のモデルの指定された範囲 (上限値と下限値を含む) で行が変更された場合に呼び出されます。
abstract  void rowsUpdated(int firstRow, int endRow, int column)
          配下のモデルの指定された範囲で行内の列が更新された場合に呼び出されます。
abstract  void setSortKeys(List<? extends RowSorter.SortKey> keys)
          現在のソートキーを設定します。
abstract  void toggleSortOrder(int column)
          指定された列のソート順序を逆にします。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

RowSorter

public RowSorter()
RowSorter を作成します。

メソッドの詳細

getModel

public abstract M getModel()
配下のモデルを返します。

戻り値:
配下のモデル

toggleSortOrder

public abstract void toggleSortOrder(int column)
指定された列のソート順序を逆にします。呼び出されたときにこのとおりの動作が得られるかどうかは、サブクラスによって決まります。通常、指定された列が第 1 のソート列であった場合、ソート順序を昇順から降順へ、または降順から昇順へ切り替えます。そうでない場合は、指定の列を第 1 のソート列 (昇順) に変更します。指定された列がソート可能でない場合、このメソッドは何も影響を及ぼしません。  

このメソッドによってソート順序が変更され、ソートが行われる場合は、適切な RowSorterListener 通知が送信されます。

パラメータ:
column - 配下のモデルに基づいて、 ソート順序を切り替える列
例外:
IndexOutOfBoundsException - 列が配下のモデルの 範囲外にある場合

convertRowIndexToModel

public abstract int convertRowIndexToModel(int index)
配下のモデルの index の位置を返します。ビューの座標の行 index の場合、配下のモデルの行インデックスを返します。

パラメータ:
index - 配下のビューの行インデックス
戻り値:
ビューの行インデックス
例外:
IndexOutOfBoundsException - index がビューの範囲外にある場合

convertRowIndexToView

public abstract int convertRowIndexToView(int index)
ビューの index の位置を返します。配下のモデルの座標の行 index の場合、ビューの行インデックスを返します。

パラメータ:
index - 配下のモデルの行インデックス
戻り値:
ビューの行インデックス。インデックスがビューの 範囲外にある場合は -1
例外:
IndexOutOfBoundsException - index がモデルの範囲外にある場合

setSortKeys

public abstract void setSortKeys(List<? extends RowSorter.SortKey> keys)
現在のソートキーを設定します。

パラメータ:
keys - 新規の SortKeys。 空のリスト (このビューではソートを行わないことを示す) を 指定する場合は null

getSortKeys

public abstract List<? extends RowSorter.SortKey> getSortKeys()
現在のソートキーを返します。このメソッドは null でない List を返します。さらに、変更不可能な List を返すこともあります。ソートキーを変更する必要がある場合は、返された List のコピーを作成し、このコピーを変更して作成した新しいリストを使って、setSortKeys を呼び出します。

戻り値:
現在のソート順序

getViewRowCount

public abstract int getViewRowCount()
ビュー内の行数を返します。コンテンツにフィルタが適用されている場合、この値が配下のモデルの行数と一致しない可能性があります。

戻り値:
ビュー内の行数
関連項目:
getModelRowCount()

getModelRowCount

public abstract int getModelRowCount()
配下のモデルの行数を返します。

戻り値:
配下のモデルの行数
関連項目:
getViewRowCount()

modelStructureChanged

public abstract void modelStructureChanged()
配下のモデルの構造が完全に変更された場合に呼び出されます。たとえば、TableModel で列数が変更された場合に、このメソッドが呼び出されます。  

通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。


allRowsChanged

public abstract void allRowsChanged()
配下のモデルのコンテンツが完全に変更された場合に呼び出されます。変更されたのはコンテンツだけであり、テーブルの構造は変わりません。これは、通常、その他のメソッドでは指定できないような過度の変更があった場合に送信されます。  

通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。


rowsInserted

public abstract void rowsInserted(int firstRow,
                                  int endRow)
配下のモデルの指定された範囲 (上限値と下限値を含む) に行が挿入された場合に呼び出されます。  

対象となる範囲のインデックスは、引数で指定します。第 1 の引数は、変更前のモデルを基にしており、変更前のモデルのサイズ以下である必要があります。第 2 の引数は、変更後のモデルを基にしており、変更後のモデルのサイズ未満である必要があります。たとえば 5 行のモデルの末尾に 3 項目を追加する場合、インデックスは 5,7 になります。

通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。

パラメータ:
firstRow - 最初の行
endRow - 最後の行
例外:
IndexOutOfBoundsException - いずれかの引数が無効である場合、または firstRowendRow より大きい場合

rowsDeleted

public abstract void rowsDeleted(int firstRow,
                                 int endRow)
配下のモデルの指定された範囲 (上限値と下限値を含む) から行が削除された場合に呼び出されます。  

対象となる範囲のインデックスは、変更前のモデルを表す引数で指定します。たとえば 5 行のモデルの末尾から 3 項目を削除する場合、インデックスは 2,4 になります。

通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。

パラメータ:
firstRow - 最初の行
endRow - 最後の行
例外:
IndexOutOfBoundsException - どちらかの引数が変更前のモデルの範囲外にある場合、または firstRow のほうが endRow より大きい場合

rowsUpdated

public abstract void rowsUpdated(int firstRow,
                                 int endRow)
配下のモデルの指定された範囲 (上限値と下限値を含む) で行が変更された場合に呼び出されます。  

通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。

パラメータ:
firstRow - 配下のモデルの最初の行
endRow - 配下のモデルの最後の行
例外:
IndexOutOfBoundsException - どちらかの引数が配下のモデルの範囲外にある場合、または firstRow のほうが endRow より大きい場合

rowsUpdated

public abstract void rowsUpdated(int firstRow,
                                 int endRow,
                                 int column)
配下のモデルの指定された範囲で行内の列が更新された場合に呼び出されます。  

通常、ユーザーがこのメソッドを呼び出すことはありません。このメソッドは、ビュークラスから呼び出せるように public になっています。

パラメータ:
firstRow - 配下のモデルの最初の行
endRow - 配下のモデルの最後の行
column - 配下のモデルに基づいて、 変更した列
例外:
IndexOutOfBoundsException - どちらかの引数が変更後の配下のモデルの範囲外にある場合、firstRow のほうが endRow より大きい場合、または column が配下のモデルの範囲外にある場合

addRowSorterListener

public void addRowSorterListener(RowSorterListener l)
この RowSorter に関する通知を受け取る RowSorterListener を追加します。同じリスナーを複数追加した場合、複数の通知を受け取ることになります。lnull の場合、何も行われません。

パラメータ:
l - RowSorterListener

removeRowSorterListener

public void removeRowSorterListener(RowSorterListener l)
RowSorterListener を削除します。lnull の場合、何も行われません。

パラメータ:
l - RowSorterListener

fireSortOrderChanged

protected void fireSortOrderChanged()
ソート順序が変更されたことをリスナーに通知します。


fireRowSorterChanged

protected void fireRowSorterChanged(int[] lastRowIndexToModel)
マッピングが変更されたことをリスナーに通知します。

パラメータ:
lastRowIndexToModel - ソート前のモデルインデックスからビューインデックスへのマッピング (null の場合もある)

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。