public abstract class FilteredTableModel<E extends javax.swing.table.TableModel>
extends javax.swing.table.AbstractTableModel
implements javax.swing.event.TableModelListener
Here is an example of how to use it extracted from the InstallPanel
PluginTableModel tableModel = new PluginTableModel();
filteredTableModel = new FilteredTableModel<PluginTableModel>(tableModel)
{
public String prepareFilter(String filter)
{
return filter.toLowerCase();
}
public boolean passFilter(int row, String filter)
{
String pluginName = (String) delegated.getValueAt(row, 1);
return pluginName.toLowerCase().contains(filter);
}
};
table = new JTable(filteredTableModel);
filteredTableModel.setTable(table);
It is not mandatory but highly recommended to give the JTable instance to the
model in order to keep the selection after the filter has been updated
Modifier and Type | Field and Description |
---|---|
protected E |
delegated
The delegated table model.
|
Modifier | Constructor and Description |
---|---|
protected |
FilteredTableModel() |
protected |
FilteredTableModel(E delegated) |
Modifier and Type | Method and Description |
---|---|
java.lang.Class<?> |
getColumnClass(int columnIndex) |
int |
getColumnCount() |
java.lang.String |
getColumnName(int columnIndex) |
E |
getDelegated() |
int |
getInternal2ExternalRow(int internalRowIndex)
Converts a row index from the delegated table model into a row index of the JTable.
|
int |
getRowCount() |
int |
getTrueRow(int rowIndex)
Converts a row index from the JTable to an internal row index from the delegated model.
|
java.lang.Object |
getValueAt(int rowIndex,
int columnIndex) |
boolean |
isCellEditable(int rowIndex,
int columnIndex) |
abstract boolean |
passFilter(int row,
java.lang.String filter)
This callback indicates if a row passes the filter.
|
java.lang.String |
prepareFilter(java.lang.String filter) |
void |
setDelegated(E delegated) |
void |
setFilter(java.lang.String filter) |
void |
setTable(javax.swing.JTable table)
Set the JTable that uses this model.
|
void |
setValueAt(java.lang.Object aValue,
int rowIndex,
int columnIndex) |
void |
tableChanged(javax.swing.event.TableModelEvent e)
This fine grain notification tells listeners the exact range
of cells, rows, or columns that changed.
|
addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getListeners, getTableModelListeners, removeTableModelListener
protected E extends javax.swing.table.TableModel delegated
protected FilteredTableModel(E delegated)
protected FilteredTableModel()
public void setTable(javax.swing.JTable table)
table
- the table that uses the modelpublic E getDelegated()
public void setDelegated(E delegated)
public void setFilter(java.lang.String filter)
public java.lang.String prepareFilter(java.lang.String filter)
public abstract boolean passFilter(int row, java.lang.String filter)
row
- the row number the delegate row countfilter
- the filter stringpublic int getRowCount()
getRowCount
in interface javax.swing.table.TableModel
public int getColumnCount()
getColumnCount
in interface javax.swing.table.TableModel
public java.lang.String getColumnName(int columnIndex)
getColumnName
in interface javax.swing.table.TableModel
getColumnName
in class javax.swing.table.AbstractTableModel
public java.lang.Class<?> getColumnClass(int columnIndex)
getColumnClass
in interface javax.swing.table.TableModel
getColumnClass
in class javax.swing.table.AbstractTableModel
public boolean isCellEditable(int rowIndex, int columnIndex)
isCellEditable
in interface javax.swing.table.TableModel
isCellEditable
in class javax.swing.table.AbstractTableModel
public java.lang.Object getValueAt(int rowIndex, int columnIndex)
getValueAt
in interface javax.swing.table.TableModel
public void setValueAt(java.lang.Object aValue, int rowIndex, int columnIndex)
setValueAt
in interface javax.swing.table.TableModel
setValueAt
in class javax.swing.table.AbstractTableModel
public int getTrueRow(int rowIndex)
rowIndex
- the row indexpublic int getInternal2ExternalRow(int internalRowIndex)
internalRowIndex
- the internal row indexpublic void tableChanged(javax.swing.event.TableModelEvent e)
tableChanged
in interface javax.swing.event.TableModelListener