Class ReflectedTableModel

  • All Implemented Interfaces:
    java.io.Serializable, javax.swing.table.TableModel

    public class ReflectedTableModel
    extends javax.swing.table.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:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      ReflectedTableModel()
      Create an empty model with no columns and no rows.
      ReflectedTableModel​(java.lang.Class clazz)
      Create an empty model with no rows but the columns preset to match the properties in the given class.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private void addRowElement​(java.lang.Object object)
      Add a row element
      private void addRowElements​(java.util.List list)  
      protected void assertNotNull​(java.lang.String fieldName, java.lang.Object object)
      Throw an exception if the specified object is null
      int getColumnCount()
      Return the number of columns.
      java.lang.String getColumnName​(int index)
      Return the name of the column at the specified index.
      java.util.List getColumns()
      Return a list containing the ColumnInfo objects that are used to define each column.
      int getRowCount()
      Return the number of rows.
      java.util.List getRows()
      Return a list containing the objects that are used to create each row.
      TraceChannel getTraceChannel()
      Return the channel currently being used for tracing or null if tracing is disabled.
      java.lang.Object getValueAt​(int rowIndex, int columnIndex)
      Return the specified object.
      private void removeRowElement​(java.lang.Object object)
      Remove one row
      private void removeRowElements​(java.util.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
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • 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 java.beans.PropertyChangeListener propertyChangeListener_
      • rowElementControlDatas_

        private final java.util.Map rowElementControlDatas_
      • rows_

        private final java.util.List rows_
      • columns_

        private final java.util.List columns_
      • EMPTY_OBJECT_ARRAY

        private static final java.lang.Object[] EMPTY_OBJECT_ARRAY
    • Constructor Detail

      • ReflectedTableModel

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

        public ReflectedTableModel​(java.lang.Class clazz)
                            throws java.beans.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:
        java.beans.IntrospectionException - If the Introspector is unable to get the properties for this class.
    • Method Detail

      • getRows

        public java.util.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 java.util.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 java.lang.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 java.lang.String getColumnName​(int index)
        Return the name of the column at the specified index.
        Specified by:
        getColumnName in interface javax.swing.table.TableModel
        Overrides:
        getColumnName in class javax.swing.table.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​(java.lang.Object object)
        Add a row element
        Parameters:
        object - the object that will be used to populate this row
      • addRowElements

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

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

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

        protected final void assertNotNull​(java.lang.String fieldName,
                                           java.lang.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