|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
java.lang.Objectjavax.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 - 要使用的底層模型,或者 nullpublic 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> 中的 getComparatorcolumn - 要獲取 Comparator 的列,就底層模型而言
Comparator
IndexOutOfBoundsException - 如果 column 超出底層模型的範圍protected boolean useToString(int column)
ModelWrapper.getStringValueAt;否則,將使用 ModelWrapper.getValueAt。由子類別(比如 TableRowSorter)決定是否在其 ModelWrapper 實作中遵守此值。
DefaultRowSorter<M extends TableModel,Integer> 中的 useToStringcolumn - 要測試的列的索引,就底層模型而言
IndexOutOfBoundsException - 如果 column 無效
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。