|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
java.lang.Objectjavax.swing.RowSorter<M>
M - 底層模型的型別public abstract class RowSorter<M>
RowSorter 提供排序和過濾的基礎。創建和安裝了 RowSorter 之後,您幾乎不需要直接與它交互。有關 JTable 的 RowSorter 具體實作,請參閱 TableRowSorter。
RowSorter 的主要功能在於,提供兩個坐標系統之間的映射關係:視圖的映射關係(例如 JTable)和底層資料源(通常是模型)的映射關係。
視圖調用 RowSorter 的以下方法:
toggleSortOrder — 當發生了觸發排序操作的恰當使用者行為時,視圖調用此方法。例如,使用者在表中單擊列標題時。
RowSorter 不應該更新其映射關係。
convertRowIndexToModel、convertRowIndexToView 和 getViewRowCount 方法,所以這些方法需要很快的運行快速。
RowSorter 通過 RowSorterListener 提供更改的通知。它發送兩種型別的通知:
RowSorterEvent.Type.SORT_ORDER_CHANGED — 通知偵聽器排序順序發生了更改。此通知通常後跟一個通知,表示排序發生了更改。
RowSorterEvent.Type.SORTED — 通知偵聽器由 RowSorter 維護的映射關係已經以某種方式發生了更改。
RowSorter 實作與底層模型通常沒有一對一的映射關係,但它們也可以這樣做。例如,如果資料庫進行排序操作,則可以通過資料庫調用 toggleSortOrder (在後台執行緒上),並覆寫映射方法以返回傳入的參數。
RowSorter 的具體實作需要參考一個模型,比如 TableModel 或 ListModel。JTable 和 JList 之類別的視圖類別也將參考該模型。要避免排序依賴關係,RowSorter 實作不應該在模型上安裝偵聽器。而是在模型更改時,視圖類別調用 RowSorter。例如,如果在 TableModel 中更新了一行,則 JTable 調用 rowsUpdated。模型更改時,視圖可以調用任意以下方法:modelStructureChanged、allRowsChanged、rowsInserted、rowsDeleted 和 rowsUpdated。
TableRowSorter| 巢狀類別摘要 | |
|---|---|
static class |
RowSorter.SortKey
SortKey 描述特定列的排序順序。 |
| 建構子摘要 | |
|---|---|
RowSorter()
創建一個 RowSorter。 |
|
| 方法摘要 | |
|---|---|
void |
addRowSorterListener(RowSorterListener l)
添加一個 RowSorterListener 來接收有關此 RowSorter 的通知。 |
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 |
| 建構子詳細資訊 |
|---|
public RowSorter()
RowSorter。
| 方法詳細資訊 |
|---|
public abstract M getModel()
public abstract void toggleSortOrder(int column)
如果此方法導致更改排序順序和排序操作,則它將發送適當的 RowSorterListener 通知。
column - 要切換排序順序的列,就底層模型而言
IndexOutOfBoundsException - 如果列超出底層模型的範圍public abstract int convertRowIndexToModel(int index)
index 的位置。也就是說,對於視圖坐標中的行 index,此方法返回基於底層模型的行索引。
index - 基於底層視圖的行索引
IndexOutOfBoundsException - 如果 index 超出視圖的範圍public abstract int convertRowIndexToView(int index)
index 的位置。也就是說,對於底層模型坐標中的行 index,此方法返回基於視圖的行索引。
index - 基於底層模型的行索引
IndexOutOfBoundsException - 如果 index 超出模型的範圍public abstract void setSortKeys(List<? extends RowSorter.SortKey> keys)
keys - 新的 SortKeys;null 是指定一個空列表的簡寫,表示視圖應該是未排序的。public abstract List<? extends RowSorter.SortKey> getSortKeys()
非 null List,可以返回一個無法修改的 List。如果需要更改排序鍵,可創建所返回 List 的一個副本,更改該副本並使用新列表調用 setSortKeys。
public abstract int getViewRowCount()
getModelRowCount()public abstract int getModelRowCount()
getViewRowCount()public abstract void modelStructureChanged()
TableModel 中的列數發生了更改,則此方法將被調用。
通常不調用此方法。此方法是公共的,允許視圖類別調用它。
public abstract void allRowsChanged()
通常不調用此方法。此方法是公共的,允許視圖類別調用它。
public abstract void rowsInserted(int firstRow,
int endRow)
參數指定有效範圍的索引。第一個參數是基於更改之前的模型的,必須小於等於更改之前的模型的大小。第二個參數是基於更改之後的模型的,必須小於更改之後的模型的大小。例如,如果有一個 5 行的模型並在該模型的尾部添加 3 個項,則其索引為 5、7。
通常不調用此方法。此方法是公共的,允許視圖類別調用它。
firstRow - 第一行endRow - 最後一行
IndexOutOfBoundsException - 如果任一參數無效,或者 firstRow > endRow
public abstract void rowsDeleted(int firstRow,
int endRow)
參數指定有效範圍的索引,其基於更改之前的模型。例如,如果有一個 5 行的模型並從模型的尾部刪除 3 個項,則其索引為 2、4。
通常不調用此方法。此方法是公共的,允許視圖類別調用它。
firstRow - 第一行endRow - 最後一行
IndexOutOfBoundsException - 如果任一參數超出模型更改之前的範圍,或者 firstRow > endRow
public abstract void rowsUpdated(int firstRow,
int endRow)
通常不調用此方法。此方法是公共的,允許視圖類別調用它。
firstRow - 第一行,就底層模型而言endRow - 最後一行,就底層模型而言
IndexOutOfBoundsException - 如果任一參數超出模型更改之前的範圍,或者 firstRow > endRow
public abstract void rowsUpdated(int firstRow,
int endRow,
int column)
通常不調用此方法。此方法是公共的,允許視圖類別調用它。
firstRow - 第一行,就底層模型而言endRow - 最後一行,就底層模型而言column - 已更改的列,就底層模型而言
IndexOutOfBoundsException - 如果任一參數超出底層模型更改之後的範圍,firstRow > endRow 或者 column 超出底層模型的範圍public void addRowSorterListener(RowSorterListener l)
RowSorterListener 來接收有關此 RowSorter 的通知。如果多次添加相同的偵聽器,則它將接收多個通知。如果 l 為 null,則不執行任何操作。
l - RowSorterListenerpublic void removeRowSorterListener(RowSorterListener l)
RowSorterListener。如果 l 為 null,則不執行任何操作。
l - RowSorterListenerprotected void fireSortOrderChanged()
protected void fireRowSorterChanged(int[] lastRowIndexToModel)
lastRowIndexToModel - 模型索引到排序之前視圖索引的映射關係,可以為 null
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。