An implementation of
RowSorter
that provides sorting and
filtering around a grid-based data model.
Beyond creating and installing a
RowSorter
, you very rarely
need to interact with one directly. Refer to
TableRowSorter
for a concrete
implementation of
RowSorter
for
JTable
.
Sorting is done based on the current SortKey
s, in order.
If two objects are equal (the Comparator
for the
column returns 0) the next SortKey
is used. If no
SortKey
s remain or the order is UNSORTED
, then
the order of the rows in the model is used.
Sorting of each column is done by way of a Comparator
that you can specify using the setComparator
method.
If a Comparator
has not been specified, the
Comparator
returned by
Collator.getInstance()
is used on the results of
calling toString
on the underlying objects. The
Comparator
is never passed null
. A
null
value is treated as occuring before a
non-null
value, and two null
values are
considered equal.
If you specify a Comparator
that casts its argument to
a type other than that provided by the model, a
ClassCastException
will be thrown when the data is sorted.
In addition to sorting, DefaultRowSorter
provides the
ability to filter rows. Filtering is done by way of a
RowFilter
that is specified using the
setRowFilter
method. If no filter has been specified all
rows are included.
By default, rows are in unsorted order (the same as the model) and
every column is sortable. The default Comparator
s are
documented in the subclasses (for example, TableRowSorter
).
If the underlying model structure changes (the
modelStructureChanged
method is invoked) the following
are reset to their default values: Comparator
s by
column, current sort order, and whether each column is sortable. To
find the default Comparator
s, see the concrete
implementation (for example, TableRowSorter
). The default
sort order is unsorted (the same as the model), and columns are
sortable by default.
If the underlying model structure changes (the
modelStructureChanged
method is invoked) the following
are reset to their default values: Comparator
s by column,
current sort order and whether a column is sortable.
DefaultRowSorter
is an abstract class. Concrete
subclasses must provide access to the underlying data by invoking
setModelWrapper
. The setModelWrapper
method
must be invoked soon after the constructor is
called, ideally from within the subclass's constructor.
Undefined behavior will result if you use a DefaultRowSorter
without specifying a ModelWrapper
.
DefaultRowSorter
has two formal type parameters. The
first type parameter corresponds to the class of the model, for example
DefaultTableModel
. The second type parameter
corresponds to the class of the identifier passed to the
RowFilter
. Refer to TableRowSorter
and
RowFilter
for more details on the type parameters.