M
-模型的类型
I
-标识符传递给
RowFilter
类型
public abstract class DefaultRowSorter<M,I> extends RowSorter<M>
RowSorter
提供排序和筛选在基于网格的数据模型。除了创建和安装
RowSorter
,你很少需要一个直接的互动。参考
TableRowSorter
为
JTable
RowSorter
的具体实现。
排序是根据目前的SortKey
s做为。如果两个对象是相等的(该列的Comparator
返回0)下SortKey
使用。如果没有SortKey
s保持或订单UNSORTED
,然后在模型中的行的顺序是。
每一列的排序是通过一个Comparator
,您可以指定使用setComparator
方法做。如果一个Comparator
尚未指定的Comparator
返回Collator.getInstance()
用于对标的对象调用toString
结果。的Comparator
是从来不给null
。一null
值被视为发生non-null
值之前,两null
值都是相同的。
如果你指定一个Comparator
投其参数比其他模型所提供的类型,一个ClassCastException
将当数据的排序。
除了排序,DefaultRowSorter
提供过滤行的能力。过滤是通过一个RowFilter
,使用setRowFilter
方法指明了。如果没有指定的筛选器已被指定的所有行。
默认情况下,行在无序的秩序(如模型相同),每一列排序。默认Comparator
s在类文件(例如,TableRowSorter
)。
如果基础模型结构的变化(的modelStructureChanged
方法被调用)以下是重置为默认值:Comparator
s柱,当前的排序顺序,以及每一列是否是合适的。找到默认的Comparator
s,看到具体的实施(例如,TableRowSorter
)。默认的排序顺序是无序的(如模型相同),和列排序的默认。
如果基础模型结构的变化(的modelStructureChanged
方法被调用)以下是重置为默认值:Comparator
s柱,当前的排序顺序和列是否是合适的。
DefaultRowSorter
是一个抽象类。具体的子类必须通过调用setModelWrapper
提供基础数据,setModelWrapper
方法必须后被调用构造函数被调用很快,最好在子类的构造函数。如果你使用一个未定义的行为DefaultRowSorter
不指定ModelWrapper
结果。
DefaultRowSorter
有两形式类型参数。第一类参数对应的模型类,例如DefaultTableModel
。第二类型参数对应的标识符传递给RowFilter
类。指TableRowSorter
和RowFilter
对类型参数的更多细节。
TableRowSorter
,
DefaultTableModel
,
Collator
Modifier and Type | Class and Description |
---|---|
protected static class |
DefaultRowSorter.ModelWrapper<M,I>
DefaultRowSorter.ModelWrapper 负责提供数据,按
DefaultRowSorter 。
|
RowSorter.SortKey
Constructor and Description |
---|
DefaultRowSorter()
创建一个空的
DefaultRowSorter 。
|
Modifier and Type | Method and Description |
---|---|
void |
allRowsChanged()
当调用的底层模型的内容已完全更改时。
|
int |
convertRowIndexToModel(int index)
返回在底层模型
index 位置。
|
int |
convertRowIndexToView(int index)
返回在观方面
index 位置。
|
Comparator<?> |
getComparator(int column)
返回指定列的
Comparator 。
|
int |
getMaxSortKeys()
返回排序键的最大数目。
|
M |
getModel()
返回底层模型。
|
int |
getModelRowCount()
返回底层模型中的行数。
|
protected DefaultRowSorter.ModelWrapper<M,I> |
getModelWrapper()
返回提供正在被分类和筛选的数据的模型包装器。
|
RowFilter<? super M,? super I> |
getRowFilter()
返回确定要隐藏的行的筛选器,如果有的话,应该从视图中隐藏。
|
List<? extends RowSorter.SortKey> |
getSortKeys()
返回当前的排序键。
|
boolean |
getSortsOnUpdates()
如果在更新相关模型时发生了一个排序,则返回真;否则,返回错误。
|
int |
getViewRowCount()
返回视图中的行数。
|
boolean |
isSortable(int column)
如果指定列排序返回true;否则,假。
|
void |
modelStructureChanged()
当底层模型结构已完全更改时调用。
|
void |
rowsDeleted(int firstRow, int endRow)
当在指定范围(包含)中已从底层模型中删除行时调用。
|
void |
rowsInserted(int firstRow, int endRow)
当行已被插入到指定范围(包含)中的底层模型时调用。
|
void |
rowsUpdated(int firstRow, int endRow)
当在指定范围(包含)之间的基本模型中已更改行时调用。
|
void |
rowsUpdated(int firstRow, int endRow, int column)
当在指定范围内的基本模型中已更新行中的列时调用。
|
void |
setComparator(int column, Comparator<?> comparator)
设置要使用的排序时指定的列的
Comparator 。
|
void |
setMaxSortKeys(int max)
设置最大排序键数。
|
protected void |
setModelWrapper(DefaultRowSorter.ModelWrapper<M,I> modelWrapper)
设置提供正在被分类和筛选的数据的模型包装器。
|
void |
setRowFilter(RowFilter<? super M,? super I> filter)
设置确定要隐藏的行,如果有的话,应该从视图中隐藏的筛选器。
|
void |
setSortable(int column, boolean sortable)
设置是否指定列排序。
|
void |
setSortKeys(List<? extends RowSorter.SortKey> sortKeys)
设置排序键。
|
void |
setSortsOnUpdates(boolean sortsOnUpdates)
如果是真的,指定一个类应该发生时的基本模式是更新(
rowsUpdated 调用)。
|
void |
sort()
排序和筛选的列在视图基于列目前正在整理和过滤,排序键的话,这个分类器相关。
|
void |
toggleSortOrder(int column)
如果指定的列已经是主要的排序列,则将排序顺序从上行到下行(或下降到上行),否则,则将指定的列列为主要的排序列,并具有一个上升的排序顺序。
|
protected boolean |
useToString(int column)
返回在排序时是否将值转换为字符串的值,并在排序时进行比较。
|
addRowSorterListener, fireRowSorterChanged, fireSortOrderChanged, removeRowSorterListener
protected final void setModelWrapper(DefaultRowSorter.ModelWrapper<M,I> modelWrapper)
modelWrapper
-模型包装器负责提供数据,排序和过滤
null
modelWrapper
IllegalArgumentException
protected final DefaultRowSorter.ModelWrapper<M,I> getModelWrapper()
public void setSortable(int column, boolean sortable)
toggleSortOrder
时调用。它仍然可能是一列被标记为unsortable直接设置排序关键字排序。默认是真的。
column
-柱来启用或禁用排序上,在模型的基础上
sortable
是否指定列排序
IndexOutOfBoundsException
-如果
column
是在模型的范围
toggleSortOrder(int)
,
setSortKeys(java.util.List<? extends javax.swing.RowSorter.SortKey>)
public boolean isSortable(int column)
column
-列检查排序,在基础模型
IndexOutOfBoundsException
如果柱底层模型的范围之外
public void setSortKeys(List<? extends RowSorter.SortKey> sortKeys)
List
;对所提供的
List
后续变化不影响本
DefaultRowSorter
。如果排序键改变触发了一种。
setSortKeys
方法重写,继承类
RowSorter<M>
sortKeys
-新的
SortKeys
;
null
是指定一个空列表的简写,表明的观点应该是无序的
IllegalArgumentException
-如果有任何的价值
sortKeys
是null或超出模型范围有一个列的索引
public List<? extends RowSorter.SortKey> getSortKeys()
non-null List
。如果需要更改排序键,复制返回的
List
,变异复制和调用
setSortKeys
与新的列表。
getSortKeys
方法重写,继承类
RowSorter<M>
public void setMaxSortKeys(int max)
setMaxSortKeys(2)
调用它。用户单击列1的头,导致基于列1中的项目进行排序的表行。下一步,用户单击列2的头,导致表将根据列2中的项目进行排序;如果列2中的任何项目都是相等的,那么这些特定的行是基于列1中的项目排序的。在这种情况下,我们说行,主要是对2列排序,然后对列1。如果用户点击列3头,那么项目主要是排序的列3次排序的列2。因为排序键的最大数量被设定为2列1
setMaxSortKeys
,不再对秩序的影响。
排序键的最大数量的执行toggleSortOrder
。您可以通过调用setSortKeys
直接指定排序关键字和他们所有的荣幸。但是如果toggleSortOrder
随后调用排序键的最大数量,将强制执行。默认值为3。
max
-排序键的最大数量
IllegalArgumentException
-如果
max
<1
public int getMaxSortKeys()
public void setSortsOnUpdates(boolean sortsOnUpdates)
rowsUpdated
调用)。例如,如果这是真的,用户编辑一个视图中该项目的位置可能会改变。默认是错误的。
sortsOnUpdates
是否更新事件排序
public boolean getSortsOnUpdates()
public void setRowFilter(RowFilter<? super M,? super I> filter)
null
表示所有的值从模型中应包括。
RowFilter
的include
方法传递一个Entry
包裹的基本模型。在Entry
列数对应的ModelWrapper
列数。标识符来自ModelWrapper
以及。
此方法触发一个排序。
filter
-用于确定哪些条目过滤器应包括
public RowFilter<? super M,? super I> getRowFilter()
public void toggleSortOrder(int column)
toggleSortOrder
方法重写,继承类
RowSorter<M>
column
索引的列进行初步排序的列,在基础模型
IndexOutOfBoundsException
如果柱底层模型的范围之外
setSortable(int,boolean)
,
setMaxSortKeys(int)
public int convertRowIndexToView(int index)
index
位置。即为行
index
在底层模型的视图返回的行的索引坐标。
convertRowIndexToView
方法重写,继承类
RowSorter<M>
index
在底层模型方面的行索引
IndexOutOfBoundsException
-如果
index
是在模型的范围
public int convertRowIndexToModel(int index)
index
位置。即为行
index
在坐标视图返回在底层模型的行索引。
convertRowIndexToModel
方法重写,继承类
RowSorter<M>
index
在底层视角的行索引
IndexOutOfBoundsException
-如果
index
以外的视野范围
public void sort()
sortKeys
名单显示,视图应该排序,作为模型相同。
protected boolean useToString(int column)
ModelWrapper.getStringValueAt
将使用,否则将使用
ModelWrapper.getValueAt
。它是由亚类,如
TableRowSorter
,尊重这种价值在他们的
ModelWrapper
实施。
column
-列的测试指标,在模型的基础上
IndexOutOfBoundsException
-如果
column
无效
public void setComparator(int column, Comparator<?> comparator)
Comparator
。这不会触发一个排序。如果你想在设置你需要显式调用
sort
比较器。
column
-柱的
Comparator
指数是用于,在基础模型
comparator
-
Comparator
使用
IndexOutOfBoundsException
-如果
column
外底层模型的范围
public Comparator<?> getComparator(int column)
Comparator
。这将返回
null
如果
Comparator
尚未指定的列。
column
-柱取
Comparator
,在基础模型
Comparator
IndexOutOfBoundsException
如果柱底层模型的范围之外
public int getViewRowCount()
getViewRowCount
方法重写,继承类
RowSorter<M>
RowSorter.getModelRowCount()
public int getModelRowCount()
getModelRowCount
方法重写,继承类
RowSorter<M>
RowSorter.getViewRowCount()
public void modelStructureChanged()
TableModel
改变,这个方法会被调用。
您通常不调用此方法。这种方法是公共的,允许视图类调用它。
modelStructureChanged
方法重写,继承类
RowSorter<M>
public void allRowsChanged()
您通常不调用此方法。这种方法是公共的,允许视图类调用它。
allRowsChanged
方法重写,继承类
RowSorter<M>
public void rowsInserted(int firstRow, int endRow)
参数给出了影响范围的指标。第一个参数是在模型的变化之前,必须小于或等于模型的大小之前的变化。第二个参数是在模型的变化后,必须小于模型的大小后的变化。例如,如果你有一个5排模型,加入3项模型的指数是5年底,7。
您通常不调用此方法。这种方法是公共的,允许视图类调用它。
rowsInserted
方法重写,继承类
RowSorter<M>
firstRow
-第一排
endRow
-最后一排
IndexOutOfBoundsException
-如果任一参数无效,或
firstRow
>
endRow
public void rowsDeleted(int firstRow, int endRow)
争论给影响范围的指标,在模型之前变化。例如,如果你有一个5排模型,从模型的指数是2年底删除3个项目,4。
您通常不调用此方法。这种方法是公共的,允许视图类调用它。
rowsDeleted
方法重写,继承类
RowSorter<M>
firstRow
-第一排
endRow
-最后一排
IndexOutOfBoundsException
如果任一参数是在模型的范围变更前,或
firstRow
>
endRow
public void rowsUpdated(int firstRow, int endRow)
您通常不调用此方法。这种方法是公共的,允许视图类调用它。
rowsUpdated
方法重写,继承类
RowSorter<M>
firstRow
-第一排,在基础模型
endRow
-最后一排,在基础模型
IndexOutOfBoundsException
如果任一参数是在底层模型的范围,或
firstRow
>
endRow
public void rowsUpdated(int firstRow, int endRow, int column)
您通常不调用此方法。这种方法是公共的,允许视图类调用它。
rowsUpdated
方法重写,继承类
RowSorter<M>
firstRow
-第一排,在基础模型
endRow
-最后一排,在基础模型
column
-已更改的列,在基础模型
IndexOutOfBoundsException
如果任一参数是在底层模型的范围变更后,
firstRow
>
endRow
,或
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.