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.