RowSorter provides the basis for sorting and filtering.
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.
RowSorter's primary role is to provide a mapping between
two coordinate systems: that of the view (for example a
JTable) and that of the underlying data source, typically a
model.
The view invokes the following methods on the RowSorter:
toggleSortOrder — The view invokes this when the
appropriate user gesture has occurred to trigger a sort. For example,
the user clicked a column header in a table.
RowSorter should not update its mapping
until one of these methods is invoked.
convertRowIndexToModel,
convertRowIndexToView and getViewRowCount methods,
these methods need to be fast.
RowSorter provides notification of changes by way of
RowSorterListener. Two types of notification are sent:
RowSorterEvent.Type.SORT_ORDER_CHANGED — notifies
listeners that the sort order has changed. This is typically followed
by a notification that the sort has changed.
RowSorterEvent.Type.SORTED — notifies listeners that
the mapping maintained by the RowSorter has changed in
some way.
RowSorter implementations typically don't have a one-to-one
mapping with the underlying model, but they can.
For example, if a database does the sorting,
toggleSortOrder might call through to the database
(on a background thread), and override the mapping methods to return the
argument that is passed in.
Concrete implementations of RowSorter
need to reference a model such as TableModel or
ListModel. The view classes, such as
JTable and JList, will also have a
reference to the model. To avoid ordering dependencies,
RowSorter implementations should not install a
listener on the model. Instead the view class will call into the
RowSorter when the model changes. For
example, if a row is updated in a TableModel
JTable invokes rowsUpdated.
When the model changes, the view may call into any of the following methods:
modelStructureChanged, allRowsChanged,
rowsInserted, rowsDeleted and
rowsUpdated.
javax.swing.table.TableRowSorter
| Modifier and Type | Class and Description |
|---|---|
| public static class | RowSorter.
SortKey describes the sort order for a particular column. |
| Modifier and Type | Field and Description |
|---|---|
| private EventListenerList |
| Access | Constructor and Description |
|---|---|
| public |
| Modifier and Type | Method and Description |
|---|---|
| public void | addRowSorterListener(RowSorterListener
the l)RowSorterListenerAdds a |
| public abstract void | |
| public abstract int | Returns: row index in terms of the viewthe row index in terms of the underlying view index)Returns the location of |
| public abstract int | Returns: row index in terms of the view, or -1 if index has been filtered out of the viewthe row index in terms of the underlying model index)Returns the location of |
| protected void | fireRowSorterChanged(int[]
the mapping from model indices to
view indices prior to the sort, may be lastRowIndexToModel)nullNotifies listener that the mapping has changed. |
| pack-priv void | |
| protected void | |
| public abstract M | |
| public abstract int | Returns: number of rows in the underlying modelReturns the number of rows in the underlying model. |
| public abstract List | |
| public abstract int | |
| public abstract void | |
| public void | |
| public abstract void | rowsDeleted(int
the first row firstRow, int the last row endRow)Invoked when rows have been deleted from the underlying model in the specified range (inclusive). |
| public abstract void | rowsInserted(int
the first row firstRow, int the last row endRow)Invoked when rows have been inserted into the underlying model in the specified range (inclusive). |
| public abstract void | rowsUpdated(int
the first row, in terms of the underlying model firstRow, int the last row, in terms of the underlying model endRow)Invoked when rows have been changed in the underlying model between the specified range (inclusive). |
| public abstract void | rowsUpdated(int
the first row, in terms of the underlying model firstRow, int the last row, in terms of the underlying model endRow, int the column that has changed, in terms of the underlying
model column)Invoked when the column in the rows have been updated in the underlying model between the specified range. |
| public abstract void | setSortKeys(List<? extends RowSorter.
the new keys)SortKeys; null
is a shorthand for specifying an empty list,
indicating that the view should be unsortedSets the current sort keys. |
| public abstract void | toggleSortOrder(int
the column to toggle the sort ordering of, in
terms of the underlying model column)Reverses the sort order of the specified column. |
| listenerList | back to summary |
|---|---|
| private EventListenerList listenerList | |
| RowSorter | back to summary |
|---|---|
| public RowSorter() Creates a | |
| addRowSorterListener | back to summary |
|---|---|
| public void addRowSorterListener(RowSorterListener l) Adds a
| |
| allRowsChanged | back to summary |
|---|---|
| public abstract void allRowsChanged() Invoked when the contents of the underlying model have completely changed. The structure of the table is the same, only the contents have changed. This is typically sent when it is too expensive to characterize the change in terms of the other methods. You normally do not call this method. This method is public to allow view classes to call it. | |
| convertRowIndexToModel | back to summary |
|---|---|
| public abstract int convertRowIndexToModel(int index) Returns the location of
| |
| convertRowIndexToView | back to summary |
|---|---|
| public abstract int convertRowIndexToView(int index) Returns the location of
| |
| fireRowSorterChanged | back to summary |
|---|---|
| protected void fireRowSorterChanged(int[] lastRowIndexToModel) Notifies listener that the mapping has changed.
| |
| fireRowSorterChanged | back to summary |
|---|---|
| pack-priv void fireRowSorterChanged(RowSorterEvent event) | |
| fireSortOrderChanged | back to summary |
|---|---|
| protected void fireSortOrderChanged() Notifies listener that the sort order has changed. | |
| getModel | back to summary |
|---|---|
| public abstract M getModel() Returns the underlying model.
| |
| getModelRowCount | back to summary |
|---|---|
| public abstract int getModelRowCount() Returns the number of rows in the underlying model.
| |
| getSortKeys | back to summary |
|---|---|
| public abstract List Returns the current sort keys. This must return a | |
| getViewRowCount | back to summary |
|---|---|
| public abstract int getViewRowCount() Returns the number of rows in the view. If the contents have been filtered this might differ from the row count of the underlying model.
| |
| modelStructureChanged | back to summary |
|---|---|
| public abstract void modelStructureChanged() Invoked when the underlying model structure has completely
changed. For example, if the number of columns in a
You normally do not call this method. This method is public to allow view classes to call it. | |
| removeRowSorterListener | back to summary |
|---|---|
| public void removeRowSorterListener(RowSorterListener l) Removes a
| |
| rowsDeleted | back to summary |
|---|---|
| public abstract void rowsDeleted(int firstRow, int endRow) Invoked when rows have been deleted from the underlying model in the specified range (inclusive). The arguments give the indices of the effected range and are in terms of the model before the change. For example, if you have a 5-row model and delete 3 items from the end of the model the indices are 2, 4. You normally do not call this method. This method is public to allow view classes to call it.
| |
| rowsInserted | back to summary |
|---|---|
| public abstract void rowsInserted(int firstRow, int endRow) Invoked when rows have been inserted into the underlying model in the specified range (inclusive). The arguments give the indices of the effected range. The first argument is in terms of the model before the change, and must be less than or equal to the size of the model before the change. The second argument is in terms of the model after the change and must be less than the size of the model after the change. For example, if you have a 5-row model and add 3 items to the end of the model the indices are 5, 7. You normally do not call this method. This method is public to allow view classes to call it.
| |
| rowsUpdated | back to summary |
|---|---|
| public abstract void rowsUpdated(int firstRow, int endRow) Invoked when rows have been changed in the underlying model between the specified range (inclusive). You normally do not call this method. This method is public to allow view classes to call it.
| |
| rowsUpdated | back to summary |
|---|---|
| public abstract void rowsUpdated(int firstRow, int endRow, int column) Invoked when the column in the rows have been updated in the underlying model between the specified range. You normally do not call this method. This method is public to allow view classes to call it.
| |
| setSortKeys | back to summary |
|---|---|
| public abstract void setSortKeys(List<? extends RowSorter. Sets the current sort keys. | |
| toggleSortOrder | back to summary |
|---|---|
| public abstract void toggleSortOrder(int column) Reverses the sort order of the specified column. It is up to subclasses to provide the exact behavior when invoked. Typically this will reverse the sort order from ascending to descending (or descending to ascending) if the specified column is already the primary sorted column; otherwise, makes the specified column the primary sorted column, with an ascending sort order. If the specified column is not sortable, this method has no effect.
If this results in changing the sort order and sorting, the
appropriate
| |
| Access | Constructor and Description |
|---|---|
| public |
| Modifier and Type | Method and Description |
|---|---|
| public boolean | Returns: true ifo is equal to this SortKeythe object to compare to o)Overrides java. Returns true if this object equals the specified object. |
| public final int | |
| public final SortOrder | |
| public int | Returns: hash codeOverrides java. Returns the hash code for this |
| column | back to summary |
|---|---|
| private int column | |
| sortOrder | back to summary |
|---|---|
| private SortOrder sortOrder | |
| SortKey | back to summary |
|---|---|
| public SortKey(int column, SortOrder sortOrder) Creates a
| |
| equals | back to summary |
|---|---|
| public boolean equals(Object o) Overrides java. Returns true if this object equals the specified object.
If the specified object is a
| |
| getColumn | back to summary |
|---|---|
| public final int getColumn() Returns the index of the column.
| |
| getSortOrder | back to summary |
|---|---|
| public final SortOrder getSortOrder() Returns the sort order of the column.
| |
| hashCode | back to summary |
|---|---|
| public int hashCode() Overrides java. Returns the hash code for this
| |