Module  java.desktop
软件包  javax.swing.table

Class DefaultTableModel

  • All Implemented Interfaces:
    SerializableTableModel


    public class DefaultTableModel
    extends AbstractTableModel
    implements Serializable
    这是一个TableModel的实现,它使用Vector Vectors来存储单元格值对象。

    警告: DefaultTableModel返回列类为Object DefaultTableModelTableRowSorter DefaultTableModel使用时,这将导致大量使用toString ,对于非String数据类型来说是昂贵的。 如果您使用DefaultTableModelTableRowSorter ,强烈建议您覆盖getColumnClass以返回相应的类型。

    警告:此类的序列化对象与将来的Swing版本不兼容。 当前的序列化支持适用于运行相同版本的Swing的应用程序之间的短期存储或RMI。 从1.4开始,所有JavaBeans的长期存储支持已被添加到java.beans包中。 请参阅XMLEncoder

    另请参见:
    TableModelgetDataVector()Serialized Form
    • 字段详细信息

      • dataVector

        protected Vector<Vector> dataVector
        VectorVectorsObject值。
      • columnIdentifiers

        protected Vector columnIdentifiers
        列标识符的 Vector
    • 方法详细信息

      • setDataVector

        public void setDataVector​(Vector<? extends Vector> dataVector,
                                  Vector<?> columnIdentifiers)
        用新的Vector行替换当前的dataVector实例变量, dataVector 每行代表dataVector作为VectorObject值。 columnIdentifiers是新列的名称。 在第一名称columnIdentifiers在映射到第0列dataVector dataVector每一行dataVector调整为匹配columnIdentifiers的列数, columnIdentifiers是截断Vector如果太长),或者如果太短,则添加null值。

        请注意,传递nulldataVector导致未指定的行为,这可能是一个例外。

        参数
        dataVector - 新的数据向量
        columnIdentifiers - 列的名称
        另请参见:
        getDataVector()
      • setDataVector

        public void setDataVector​(Object[][] dataVector,
                                  Object[] columnIdentifiers)
        取代了的值dataVector与阵列中的值的实例变量dataVector Object[][]数组中的第一个索引是行索引,第二个是列索引。 columnIdentifiers是新列的名称。
        参数
        dataVector - 新的数据向量
        columnIdentifiers - 列的名称
        另请参见:
        setDataVector(Vector, Vector)
      • newDataAvailable

        public void newDataAvailable​(TableModelEvent event)
        相当于 fireTableChanged
        参数
        event - 变更事件
      • newRowsAdded

        public void newRowsAdded​(TableModelEvent e)
        确保新行的列数正确。 这是通过使用在实现setSize在方法Vector其中截断其太长矢量,并追加null ■如果它们是太短了。 此方法还向所有收听者发送一条tableChanged通知消息。
        参数
        e - 此TableModelEvent描述了添加行的位置。 如果null它假定所有的行都是新添加的
        另请参见:
        getDataVector()
      • rowsRemoved

        public void rowsRemoved​(TableModelEvent event)
        相当于 fireTableChanged
        参数
        event - 更改事件
      • setNumRows

        public void setNumRows​(int rowCount)
        作为Java 2平台v1.3的过时。 请改用setRowCount
        参数
        rowCount - 新的行数
      • setRowCount

        public void setRowCount​(int rowCount)
        设置模型中的行数。 如果新的大小大于当前大小,则新行将添加到模型的末尾。如果新的大小小于当前大小,索引为rowCount或更大的所有行将被丢弃。
        参数
        rowCount - 模型中的行数
        从以下版本开始:
        1.3
        另请参见:
        setColumnCount(int)
      • addRow

        public void addRow​(Vector<?> rowData)
        在模型的末尾添加一行。 新行将包含null ,除非值rowData指定。 将生成要添加的行的通知。
        参数
        rowData - 要添加的行的可选数据
      • addRow

        public void addRow​(Object[] rowData)
        在模型的末尾添加一行。 新行将包含null ,除非值rowData指定。 将生成要添加的行的通知。
        参数
        rowData - 要添加的行的可选数据
      • insertRow

        public void insertRow​(int row,
                              Vector<?> rowData)
        在模型中插入一行row 新行将包含null ,除非值rowData指定。 将生成要添加的行的通知。
        参数
        row - 要插入的行的行索引
        rowData - 要添加的行的可选数据
        异常
        ArrayIndexOutOfBoundsException - 如果行无效
      • insertRow

        public void insertRow​(int row,
                              Object[] rowData)
        在模型中插入一行row 新行将包含null ,除非值rowData指定。 将生成要添加的行的通知。
        参数
        row - 要插入的行的行索引
        rowData - 要添加的行的可选数据
        异常
        ArrayIndexOutOfBoundsException - 如果行无效
      • moveRow

        public void moveRow​(int start,
                            int end,
                            int to)
        将一行或多行从包含范围startend到模型中的to位置。 移转后,索引号为start行将为索引号to 此方法将向所有收听者发送一条tableChanged通知消息。
          Examples of moves:
        
          1. moveRow(1,3,5);
                  a|B|C|D|e|f|g|h|i|j|k   - before
                  a|e|f|g|h|B|C|D|i|j|k   - after
        
          2. moveRow(6,7,1);
                  a|b|c|d|e|f|G|H|i|j|k   - before
                  a|G|H|b|c|d|e|f|i|j|k   - after 
        参数
        start - 要移动的起始行索引
        end - 要移动的结束行索引
        to - 要移动的行的目的地
        异常
        ArrayIndexOutOfBoundsException - 如果任何元素将被移出表的范围
      • removeRow

        public void removeRow​(int row)
        从模型中删除row的行。 被删除的行的通知将被发送给所有的监听器。
        参数
        row - 要删除的行的行索引
        异常
        ArrayIndexOutOfBoundsException - 如果行无效
      • setColumnIdentifiers

        public void setColumnIdentifiers​(Vector<?> columnIdentifiers)
        替换模型中的列标识符。 如果newIdentifier的数量大于当前的列数,则新列将添加到模型中每行的末尾。 如果newIdentifier的数目小于当前的列数,那么行的末尾的所有额外的列将被丢弃。
        参数
        columnIdentifiers - 列标识符的向量。 如果null ,将模型设置为零列
        另请参见:
        setNumRows(int)
      • setColumnIdentifiers

        public void setColumnIdentifiers​(Object[] newIdentifiers)
        替换模型中的列标识符。 如果newIdentifier的数量大于当前的列数,则新列将添加到模型中每行的末尾。 如果newIdentifier s的数量少于当前的列数,那么行的末尾的所有额外的列将被丢弃。
        参数
        newIdentifiers - 列标识符数组。 如果null ,将模型设置为零列
        另请参见:
        setNumRows(int)
      • setColumnCount

        public void setColumnCount​(int columnCount)
        设置模型中的列数。 如果新尺寸大于当前尺寸,则新列将添加到具有null单元格值的模型null 如果新的大小小于当前大小,索引columnCount及更高的所有列将被丢弃。
        参数
        columnCount - 模型中的新列数
        从以下版本开始:
        1.3
        另请参见:
        setColumnCount(int)
      • addColumn

        public void addColumn​(Object columnName)
        向模型添加一列。 新列将具有标识符columnName ,可能为null。 此方法将向所有收听者发送一条tableChanged通知消息。 该方法是addColumn(Object, Vector)的封面,使用null作为数据向量。
        参数
        columnName - 要添加的列的标识符
      • addColumn

        public void addColumn​(Object columnName,
                              Vector<?> columnData)
        向模型添加一列。 新列将具有标识符columnName ,其可以为空。 columnData是列的数据的可选向量。 如果是null则列填充null值。 否则,新数据将被添加到模型,从第一个元素到第0行等。此方法将向所有收听者发送一个tableChanged通知消息。
        参数
        columnName - 要添加的列的标识符
        columnData - 要添加的列的可选数据
      • addColumn

        public void addColumn​(Object columnName,
                              Object[] columnData)
        向模型添加一列。 新列将具有标识符columnName columnData是列的可选数据数组。 如果是null该列将填充null值。 否则,新的数据将被添加到从第0行tableChanged的第一个元素开始的模型中。此方法将向所有收听者发送一个tableChanged通知消息。
        参数
        columnName - 新创建的列的标识符
        columnData - 要添加到列的新数据
        另请参见:
        addColumn(Object, Vector)
      • getColumnName

        public String getColumnName​(int column)
        返回列名。
        Specified by:
        getColumnName在接口 TableModel
        重写:
        getColumnNameAbstractTableModel
        参数
        column - 正在查询的列
        结果
        该列的名称使用columnIdentifiers相应成员的字符串值。 如果columnIdentifiers没有此索引的条目,则返回超类提供的默认名称。
      • getValueAt

        public Object getValueAt​(int row,
                                 int column)
        返回单元格的属性值为 rowcolumn
        Specified by:
        getValueAt在接口 TableModel
        参数
        row - 要查询其值的行
        column - 要查询其值的列
        结果
        在指定单元格的值Object
        异常
        ArrayIndexOutOfBoundsException - 如果给出无效的行或列
      • convertToVector

        protected static Vector<Object> convertToVector​(Object[] anArray)
        返回一个包含与数组相同的对象的向量。
        参数
        anArray - 要转换的数组
        结果
        新的矢量 如果anArraynull ,则返回null
      • convertToVector

        protected static Vector<Vector<Object>> convertToVector​(Object[][] anArray)
        返回包含与数组相同对象的向量向量。
        参数
        anArray - 要转换的双数组
        结果
        新向量向量; 如果anArraynull ,则返回null