M -底层模型的类型
public abstract class RowSorter<M> extends Object
RowSorter进行排序和筛选提供依据。除了创建和安装
RowSorter,你很少需要一个直接的互动。参考
TableRowSorter为
JTable
RowSorter的具体实现。
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
| Modifier and Type | Class and Description |
|---|---|
static class |
RowSorter.SortKey
SortKey描述了一个特定的列的排序顺序。
|
| Constructor and Description |
|---|
RowSorter()
创建一个
RowSorter。
|
| Modifier and Type | Method and Description |
|---|---|
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)
反转指定列的排序顺序。
|
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()
non-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排模型,从模型的指数是2年底删除3个项目,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
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.