|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.swing.RowSorter<M> javax.swing.DefaultRowSorter<M,Integer> javax.swing.table.TableRowSorter<M>
M
- 模型的型別,必須為 TableModel
的一個實作public class TableRowSorter<M extends TableModel>
RowSorter
的一個實作,它使用 TableModel
提供排序和過濾操作。下面的例子顯示了向 JTable
添加排序操作:
TableModel myModel = createMyTableModel(); JTable table = new JTable(myModel); table.setRowSorter(new TableRowSorter(myModel));此類別將完成所有連線操作(wiring),從而當使用者做出適當的行為(比如單擊列標題)時,表將進行直觀的排序。
JTable
的基於行的方法和 JTable
的選擇模型參考視圖而不是底層模型。因此,有必要在兩者之前進行轉換。例如,要獲取基於 myModel
的選擇,需要轉換索引:
int[] selection = table.getSelectedRows(); for (int i = 0; i < selection.length; i++) { selection[i] = table.convertRowIndexToModel(selection[i]); }類似地,要在基於底層模型坐標的
JTable
中選擇一行,執行以下相反的操作:
table.setRowSelectionInterval(table.convertRowIndexToView(row), table.convertRowIndexToView(row));
前一個例子假定不能進行過濾操作。如果能夠進行過濾,則對於在視圖中不可見的位置,convertRowIndexToView
將返回 -1。
TableRowSorter
使用 Comparator
進行比較。下文定義了如何為列選擇 Comparator
:
setComparator
方法為列指定了 Comparator
,則使用它。
getColumnClass
返回的列類別是 String
,則使用 Collator.getInstance()
返回的 Comparator
。
Comparable
,則使用調用 compareTo
方法的 Comparator
。
TableStringConverter
,則使用它將值轉換為 String
,然後使用 Collator.getInstance()
返回的 Comparator
。
toString
,再對結果調用 Collator.getInstance()
,使用所返回的 Comparator
。
除了排序操作,TableRowSorter
還提供過濾操作。使用 setFilter
方法指定過濾器。下例將只顯示包含字元串“foo”的行:
TableModel myModel = createMyTableModel(); TableRowSorter sorter = new TableRowSorter(myModel); sorter.setRowFilter(RowFilter.regexFilter(".*foo.*")); JTable table = new JTable(myModel); table.setRowSorter(sorter);
如果底層模型結構發生了更改(調用了 modelStructureChanged
方法),則以下值將被重置為其預設值:列的 Comparator
,當前排序順序以及每一列是否可排序。預設的排序順序是自然排序(與模型相同),並且預設情況下列是可排序的。
TableRowSorter
有一個形式型別參數:模型的型別。傳入完全對應於模型的型別允許基於模型進行過濾,而無需強制轉換。有關此情況的例子,請參閱 RowFilter
文檔。
警告: DefaultTableModel
返回 Object
的列類別。這種情況下將使用 toString
完成所有比較。這將產生不必要的昂貴開銷。如果列只包含一種值型別,比如 Integer
,則應該覆寫 getColumnClass
並返回適當的 Class
。這將明顯增強此類別的性能。
JTable
,
RowFilter
,
DefaultTableModel
,
Collator
,
Comparator
巢狀類別摘要 |
---|
從類別 javax.swing.DefaultRowSorter 繼承的巢狀類別/介面 |
---|
DefaultRowSorter.ModelWrapper<M,I> |
從類別 javax.swing.RowSorter 繼承的巢狀類別/介面 |
---|
RowSorter.SortKey |
建構子摘要 | |
---|---|
TableRowSorter()
使用空模型創建一個 TableRowSorter 。 |
|
TableRowSorter(M model)
使用 model 作為底層 TableModel 創建一個 TableRowSorter 。 |
方法摘要 | |
---|---|
Comparator<?> |
getComparator(int column)
返回指定列的 Comparator 。 |
TableStringConverter |
getStringConverter()
返回負責將值從模型轉換為字元串的物件。 |
void |
setModel(M model)
將 TableModel 設置為此 TableRowSorter 要使用的底層模型。 |
void |
setStringConverter(TableStringConverter stringConverter)
設置負責將值從模型轉換為字元串的物件。 |
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 TableRowSorter()
TableRowSorter
。
public TableRowSorter(M model)
model
作為底層 TableModel
創建一個 TableRowSorter
。
model
- 要使用的底層 TableModel
,null
被視為空模型。方法詳細資訊 |
---|
public void setModel(M model)
TableModel
設置為此 TableRowSorter
要使用的底層模型。可以用 null
值設置空模型。
model
- 要使用的底層模型,或者 null
public void setStringConverter(TableStringConverter stringConverter)
null
,則此方法用於將所有不具有已註冊 Comparator
的物件值轉換為字元串。
stringConverter
- 負責將值從模型轉換為字元串的物件public TableStringConverter getStringConverter()
public Comparator<?> getComparator(int column)
Comparator
。如果沒有使用 setComparator
方法指定 Comparator
,那麼將基於指定列的列類別(TableModel.getColumnClass
)返回 Comparator
。如果列類別為 String
,則返回 Collator.getInstance
。如果列類別實作 Comparable
,則返回調用 compareTo
方法的私有 Comparator
。否則,返回 Collator.getInstance
。
DefaultRowSorter<M extends TableModel,Integer>
中的 getComparator
column
- 要獲取 Comparator
的列,就底層模型而言
Comparator
IndexOutOfBoundsException
- 如果 column
超出底層模型的範圍protected boolean useToString(int column)
ModelWrapper.getStringValueAt
;否則,將使用 ModelWrapper.getValueAt
。由子類別(比如 TableRowSorter
)決定是否在其 ModelWrapper
實作中遵守此值。
DefaultRowSorter<M extends TableModel,Integer>
中的 useToString
column
- 要測試的列的索引,就底層模型而言
IndexOutOfBoundsException
- 如果 column
無效
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。