
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 SortKeys, in order.
If two objects are equal (the Comparator for the
column returns 0) the next SortKey is used. If no
SortKeys 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 Comparators 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: Comparators by
column, current sort order, and whether each column is sortable. To
find the default Comparators, 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: Comparators 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.