Package com.gargoylesoftware.base.gui
Class ReflectedTableModel
java.lang.Object
javax.swing.table.AbstractTableModel
com.gargoylesoftware.base.gui.ReflectedTableModel
- All Implemented Interfaces:
Serializable
,TableModel
A table model that uses reflection to retrieve values out of the row objects.
The sample below will create a JTable with one row of data and one column per property in the Date class (Date has 10 properties in JDK1.3).
final JTable table = new JTable(); final ReflectedTableModel model = new ReflectedTableModel(Date.class); model.getRows().add( new Date() ); table.setModel(model);This sample will only provide columns for month and year.
final JTable table = new JTable(); final ReflectedTableModel model = new ReflectedTableModel(); model.getRows().add( new Date() ); model.getColumns().add( new ReflectedTableModel.ColumnInfo("month") ); model.getColumns().add( new ReflectedTableModel.ColumnInfo("year") ); table.setModel(model);Tip: To enable debugging information call
setTraceChannel(TraceChannel)
with a non-null TraceChannel.
model.setTraceChannel(Trace.out)
- Version:
- $Revision: 1.7 $
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
This class contains information about one specific column in the table.private class
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate NotificationListListener
If any change occurs to the columns then fire a structure changed.private final List
private static final Object[]
private PropertyChangeListener
private final Map
private NotificationListListener
If the row list changes then fire the appropriate table event.private final List
private static final long
private TraceChannel
Fields inherited from class javax.swing.table.AbstractTableModel
listenerList
-
Constructor Summary
ConstructorsConstructorDescriptionCreate an empty model with no columns and no rows.ReflectedTableModel
(Class clazz) Create an empty model with no rows but the columns preset to match the properties in the given class. -
Method Summary
Modifier and TypeMethodDescriptionprivate void
addRowElement
(Object object) Add a row elementprivate void
addRowElements
(List list) protected final void
assertNotNull
(String fieldName, Object object) Throw an exception if the specified object is nullint
Return the number of columns.getColumnName
(int index) Return the name of the column at the specified index.Return a list containing the ColumnInfo objects that are used to define each column.int
Return the number of rows.getRows()
Return a list containing the objects that are used to create each row.Return the channel currently being used for tracing or null if tracing is disabled.getValueAt
(int rowIndex, int columnIndex) Return the specified object.private void
removeRowElement
(Object object) Remove one rowprivate void
removeRowElements
(List list) void
setTraceChannel
(TraceChannel channel) Set the channel to be used for tracing.Methods inherited from class javax.swing.table.AbstractTableModel
addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getColumnClass, getListeners, getTableModelListeners, isCellEditable, removeTableModelListener, setValueAt
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
rowListener_
If the row list changes then fire the appropriate table event. -
columnListener_
If any change occurs to the columns then fire a structure changed. -
propertyChangeListener_
-
rowElementControlDatas_
-
rows_
-
columns_
-
EMPTY_OBJECT_ARRAY
-
traceChannel_
-
-
Constructor Details
-
ReflectedTableModel
public ReflectedTableModel()Create an empty model with no columns and no rows. -
ReflectedTableModel
Create an empty model with no rows but the columns preset to match the properties in the given class.- Parameters:
clazz
- The class to get properties from.- Throws:
IntrospectionException
- If the Introspector is unable to get the properties for this class.
-
-
Method Details
-
getRows
Return a list containing the objects that are used to create each row. This list is backed by the original store such that changes to this list will be reflected in the table model.- Returns:
- The rows.
-
getColumns
Return a list containing the ColumnInfo objects that are used to define each column. This list is backed by the original store such that changes to this list will be reflected in the table model.- Returns:
- The columns.
-
getColumnCount
public int getColumnCount()Return the number of columns.- Returns:
- the number of columns.
-
getRowCount
public int getRowCount()Return the number of rows.- Returns:
- The number of rows.
-
getValueAt
Return the specified object.- Parameters:
rowIndex
- The row indexcolumnIndex
- The columnIndex- Returns:
- The object at the specified row and column.
-
getColumnName
Return the name of the column at the specified index.- Specified by:
getColumnName
in interfaceTableModel
- Overrides:
getColumnName
in classAbstractTableModel
- Parameters:
index
- The index of the column.- Returns:
- The name of the column at the specified index.
-
setTraceChannel
Set the channel to be used for tracing.- Parameters:
channel
- The channel to be used for tracing or null if tracing is to be disabled.
-
getTraceChannel
Return the channel currently being used for tracing or null if tracing is disabled.- Returns:
- The trace channel or null if a channel hasn't been set.
-
addRowElement
Add a row element- Parameters:
object
- the object that will be used to populate this row
-
addRowElements
- Parameters:
list
- The list of objects that will be used to create the rows.
-
removeRowElements
- Parameters:
list
- The list of object that will be removed from the model
-
removeRowElement
Remove one row- Parameters:
object
- The object that was used to create this row.
-
assertNotNull
Throw an exception if the specified object is null- Parameters:
fieldName
- The name of the paremeter we are checkingobject
- The value of the parameter we are checking
-