Class ReflectedTableModel

java.lang.Object
javax.swing.table.AbstractTableModel
com.gargoylesoftware.base.gui.ReflectedTableModel
All Implemented Interfaces:
Serializable, TableModel

public class ReflectedTableModel extends AbstractTableModel
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:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • rowListener_

      private NotificationListListener rowListener_
      If the row list changes then fire the appropriate table event.
    • columnListener_

      private NotificationListListener columnListener_
      If any change occurs to the columns then fire a structure changed.
    • propertyChangeListener_

      private PropertyChangeListener propertyChangeListener_
    • rowElementControlDatas_

      private final Map rowElementControlDatas_
    • rows_

      private final List rows_
    • columns_

      private final List columns_
    • EMPTY_OBJECT_ARRAY

      private static final Object[] EMPTY_OBJECT_ARRAY
    • traceChannel_

      private TraceChannel traceChannel_
  • Constructor Details

    • ReflectedTableModel

      public ReflectedTableModel()
      Create an empty model with no columns and no rows.
    • ReflectedTableModel

      public ReflectedTableModel(Class clazz) throws IntrospectionException
      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

      public List 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

      public List 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

      public Object getValueAt(int rowIndex, int columnIndex)
      Return the specified object.
      Parameters:
      rowIndex - The row index
      columnIndex - The columnIndex
      Returns:
      The object at the specified row and column.
    • getColumnName

      public String getColumnName(int index)
      Return the name of the column at the specified index.
      Specified by:
      getColumnName in interface TableModel
      Overrides:
      getColumnName in class AbstractTableModel
      Parameters:
      index - The index of the column.
      Returns:
      The name of the column at the specified index.
    • setTraceChannel

      public void setTraceChannel(TraceChannel channel)
      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

      public TraceChannel 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

      private void addRowElement(Object object)
      Add a row element
      Parameters:
      object - the object that will be used to populate this row
    • addRowElements

      private void addRowElements(List list)
      Parameters:
      list - The list of objects that will be used to create the rows.
    • removeRowElements

      private void removeRowElements(List list)
      Parameters:
      list - The list of object that will be removed from the model
    • removeRowElement

      private void removeRowElement(Object object)
      Remove one row
      Parameters:
      object - The object that was used to create this row.
    • assertNotNull

      protected final void assertNotNull(String fieldName, Object object)
      Throw an exception if the specified object is null
      Parameters:
      fieldName - The name of the paremeter we are checking
      object - The value of the parameter we are checking