| |||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
JTable table = …;
RowSorter sorter = table.getRowSorter();
Based on 6 examples
public abstract class RowSorter extends Object
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
{@link javax.swing.table.TableRowSorter 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
.
Nested Class Summary | |
---|---|
static class |
SortKey describes the sort order for a particular column. |
Constructor Summary | |
---|---|
Creates a RowSorter .
|
Method Summary | |
---|---|
void |
Adds a RowSorterListener to receive notification
about this RowSorter .
|
abstract void |
Invoked when the contents of the underlying model have completely changed. |
abstract int |
convertRowIndexToModel(int index) Returns the location of index in terms of the
underlying model.
|
abstract int |
convertRowIndexToView(int index) Returns the location of index in terms of the
view.
|
protected void |
fireRowSorterChanged(int[] lastRowIndexToModel) Notifies listener that the mapping has changed. |
protected void |
Notifies listener that the sort order has changed. |
abstract Object |
getModel() Returns the underlying model. |
abstract int |
Returns the number of rows in the underlying model. |
abstract List |
Returns the current sort keys. |
abstract int |
Returns the number of rows in the view. |
abstract void |
Invoked when the underlying model structure has completely changed. |
void |
Removes a RowSorterListener .
|
abstract void |
rowsDeleted(int firstRow, int endRow) Invoked when rows have been deleted from the underlying model in the specified range (inclusive). |
abstract void |
rowsInserted(int firstRow, int endRow) Invoked when rows have been inserted into the underlying model in the specified range (inclusive). |
abstract void |
rowsUpdated(int firstRow, int endRow) Invoked when rows have been changed in the underlying model between the specified range (inclusive). |
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. |
abstract void |
setSortKeys(List keys) Sets the current sort keys. |
abstract void |
toggleSortOrder(int column) Reverses the sort order of the specified column. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public RowSorter()
RowSorter
.
Method Detail |
---|
public void addRowSorterListener(RowSorterListener l)
RowSorterListener
to receive notification
about this RowSorter
. If the same
listener is added more than once it will receive multiple
notifications. If l
is null
nothing
is done.
l
- the RowSorterListener
public abstract void allRowsChanged()
You normally do not call this method. This method is public to allow view classes to call it.
public abstract int convertRowIndexToModel(int index)
index
in terms of the
underlying model. That is, for the row index
in
the coordinates of the view this returns the row index in terms
of the underlying model.
index
- the row index in terms of the underlying viewpublic abstract int convertRowIndexToView(int index)
index
in terms of the
view. That is, for the row index
in the
coordinates of the underlying model this returns the row index
in terms of the view.
index
- the row index in terms of the underlying modelprotected void fireRowSorterChanged(int[] lastRowIndexToModel)
lastRowIndexToModel
- the mapping from model indices to
view indices prior to the sort, may be null
protected void fireSortOrderChanged()
public abstract Object getModel()
public abstract int getModelRowCount()
public abstract List getSortKeys()
public abstract int getViewRowCount()
public abstract void modelStructureChanged()
TableModel
changed, this method would be invoked.
You normally do not call this method. This method is public to allow view classes to call it.
public void removeRowSorterListener(RowSorterListener l)
RowSorterListener
. If
l
is null
nothing is done.
l
- the RowSorterListener
public abstract void rowsDeleted(int firstRow, int endRow)
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.
firstRow
- the first rowendRow
- the last rowpublic abstract void rowsInserted(int firstRow, int endRow)
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.
firstRow
- the first rowendRow
- the last rowpublic abstract void rowsUpdated(int firstRow, int endRow)
You normally do not call this method. This method is public to allow view classes to call it.
firstRow
- the first row, in terms of the underlying modelendRow
- the last row, in terms of the underlying modelpublic abstract void rowsUpdated(int firstRow, int endRow, int column)
You normally do not call this method. This method is public to allow view classes to call it.
firstRow
- the first row, in terms of the underlying modelendRow
- the last row, in terms of the underlying modelcolumn
- the column that has changed, in terms of the underlying
modelpublic abstract void setSortKeys(List keys)
keys
- the new SortKeys
; null
is a shorthand for specifying an empty list,
indicating that the view should be unsortedpublic abstract void toggleSortOrder(int column)
If this results in changing the sort order and sorting, the
appropriate RowSorterListener
notification will be
sent.
column
- the column to toggle the sort ordering of, in
terms of the underlying model
| |||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |