M - 模型的类型,它必须是TableModel的一个 
        TableModel 
       public class TableRowSorter<M extends TableModel> extends DefaultRowSorter<M,Integer>
RowSorter ,其提供排序,并使用过滤TableModel 。 
       以下示例显示将排序添加到JTable : 
         TableModel myModel = createMyTableModel();
   JTable table = new JTable(myModel);
   table.setRowSorter(new TableRowSorter(myModel));  
       这将执行所有布线,使得当用户执行适当的手势时,例如单击列标题,表将进行视觉分类。 
        JTable的基于行的方法和JTable的选择模型参考视图而不是底层模型。 因此,有必要在两者之间进行转换。 例如,要获得myModel的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 : 
Comparator已经为列由指定setComparator方法,使用它。 getColumnClass返回的列类为String ,请使用Comparator返回的Collator.getInstance() 。 Comparable ,使用Comparator调用该compareTo方法。 TableStringConverter了TableStringConverter,请使用它将值转换为String ,然后使用Comparator返回的Collator.getInstance() 。 Comparator返回的Collator.getInstance()对结果调用toString上的对象。  除了排序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 s,按列,当前排序顺序,以及每列是否可排序。 默认排序顺序是自然的(与模型相同),列可默认排序。 
 TableRowSorter有一个正式类型参数:模型的类型。 传递一个与您的模型完全对应的类型,可以根据您的模型进行过滤,而无需投射。 请参阅RowFilter的RowFilter ,以获得一个示例。 
 警告: DefaultTableModel返回一个列类为Object 。 因此,所有比较将使用toString完成。 这可能是不必要的昂贵的。 如果列仅包含一种类型的值,例如Integer ,则应覆盖getColumnClass并返回相应的类 。 这将大大提高这个类的性能。 
JTable , RowFilter , DefaultTableModel , Collator , Comparator 
       DefaultRowSorter.ModelWrapper<M,I>RowSorter.SortKey| Constructor and Description | 
|---|
| TableRowSorter()
              创建一个空的模型 
              TableRowSorter。 | 
| TableRowSorter(M model)
              创建 
              TableRowSorter使用model作为底层TableModel。 | 
| Modifier and Type | Method and Description | 
|---|---|
| Comparator<?> | getComparator(int column)
              返回 
              Comparator指定列。 | 
| TableStringConverter | getStringConverter()
              返回负责将值从模型转换为字符串的对象。 
             | 
| void | setModel(M model)
              设置 
              TableModel为这个底层模型使用TableRowSorter。 | 
| void | setStringConverter(TableStringConverter stringConverter)
              设置负责将值从模型转换为字符串的对象。 
             | 
| protected boolean | useToString(int column)
              返回在进行排序比较之前是否将该值转换为字符串。 
             | 
allRowsChanged, convertRowIndexToModel, convertRowIndexToView, getMaxSortKeys, getModel, getModelRowCount, getModelWrapper, getRowFilter, getSortKeys, getSortsOnUpdates, getViewRowCount, isSortable, modelStructureChanged, rowsDeleted, rowsInserted, rowsUpdated, rowsUpdated, setComparator, setMaxSortKeys, setModelWrapper, setRowFilter, setSortable, setSortKeys, setSortsOnUpdates, sort, toggleSortOrderaddRowSorterListener, fireRowSorterChanged, fireSortOrderChanged, removeRowSorterListenerpublic TableRowSorter()
TableRowSorter 。 
          public TableRowSorter(M model)
TableRowSorter使用 
           model作为基础 
           TableModel 。 
          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指定列。 
           如果Comparator尚未使用指定setComparator方法的Comparator将基于列类(被返回TableModel.getColumnClass指定列的)。 
           如果列类为String ,则返回Collator.getInstance 。 
           如果列类实现Comparable则返回一个调用compareTo方法的私有Comparator 。 
           否则返回Collator.getInstance 。 
          getComparator在 
            DefaultRowSorter<M extends TableModel,Integer> 
           column -列去取 
            Comparator的,在底层模型而言 
           Comparator指定列 
           IndexOutOfBoundsException - 如果列超出了底层模型的范围 
           protected boolean useToString(int column)
ModelWrapper.getStringValueAt将被使用,否则ModelWrapper.getValueAt将被使用。 
           它是由子类,如TableRowSorter ,兑现他们这个值ModelWrapper实现。 
          useToString在 
            DefaultRowSorter<M extends TableModel,Integer> 
           column - 根据底层模型测试的列的索引 
           IndexOutOfBoundsException - 如果 
            column无效 
            Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.