|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.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
- RowSorterListener
public void removeRowSorterListener(RowSorterListener l)
RowSorterListener
。如果 l
為 null
,則不執行任何操作。
l
- RowSorterListener
protected 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。