M
-模型的类型,它必须是一个实现
TableModel
public class TableRowSorter<M extends TableModel> extends DefaultRowSorter<M,Integer>
RowSorter
提供排序和使用
TableModel
过滤。下面的示例显示添加排序到
JTable
:
台式createmytablemodel() myModel =;JTable表格=新JTable(myModel);表。setrowsorter(新tablerowsorter(myModel));这将做所有的接线,当用户做适当的手势,如单击列标题,该表将整理。
JTable
的基于行的方法和JTable
的选择模式是指观点不是基本模型。因此,有必要将两者之间的转换。例如,在myModel
你需要转换的指标的选择:
int [] = getselectedrows()选择表;为(int i = 0;i < selection.length;i++){选择[我] =表。convertrowindextomodel(选择[我]);}同样选择基于从底层模型的坐标
JTable
连续做逆:
表。setrowselectioninterval(表convertrowindextoview(行),表。convertrowindextoview(行));
前面的示例假定您没有启用筛选。如果您已经启用过滤convertRowIndexToView
将返回1的位置,此视图中不可见的。
TableRowSorter
使用Comparator
s做比较。下面的定义如何Comparator
选择列:
Comparator
已由setComparator
方法指定的列,使用它。getColumnClass
是String
,使用Comparator
返回Collator.getInstance()
。Comparable
,使用Comparator
compareTo
调用的方法。TableStringConverter
已指定,用它来转换的值String
s然后用Comparator
返回Collator.getInstance()
。Comparator
返回的结果Collator.getInstance()
从对象上调用toString
。除了排序TableRowSorter
提供过滤能力。过滤器的使用setFilter
方法指定。下面的示例将只显示行包含字符串“foo”:
台式createmytablemodel() myModel =;tablerowsorter分类器=新tablerowsorter(myModel);分拣机。setrowfilter(rowfilter。regexfilter(“foo。*。*”));JTable表格=新JTable(myModel);表setrowsorter(排序);
如果基础模型结构的变化(的modelStructureChanged
方法被调用)以下是重置为默认值:Comparator
s柱,当前的排序顺序,以及每一列是否是合适的。默认的排序顺序是天然的(如模型相同),和列排序的默认。
TableRowSorter
有形式参数:模型的类型。传递一个对应于你的模型的类型允许你在没有铸造的基础上过滤你的模型。指的是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)
设置用作这
TableRowSorter 底层模型的
TableModel 。
|
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, toggleSortOrder
addRowSorterListener, fireRowSorterChanged, fireSortOrderChanged, removeRowSorterListener
public TableRowSorter()
TableRowSorter
。
public TableRowSorter(M model)
TableRowSorter
使用
model
作为底层
TableModel
。
model
-基本
TableModel
使用,
null
看作一个空模型
public void setModel(M model)
TableRowSorter
底层模型的
TableModel
。一个价值
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
私人
Comparator
返回调用方法的
compareTo
。否则
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.