Module java.desktop

Class DefaultTableModel

java.lang.Object
javax.swing.table.AbstractTableModel
javax.swing.table.DefaultTableModel
所有已实现的接口:
Serializable, TableModel

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

警告: DefaultTableModel返回一个Object列类。当DefaultTableModelTableRowSorter一起使用时,这将导致广泛使用toString,对于非String数据类型来说是昂贵的。如果您将DefaultTableModelTableRowSorter一起使用,强烈建议您重写getColumnClass以返回适当的类型。

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

参见:
  • Field Details

    • dataVector

      protected Vector<Vector> dataVector
      包含Object值的VectorVector
    • columnIdentifiers

      protected Vector columnIdentifiers
      列标识符的Vector
  • Constructor Details

  • Method Details

    • getDataVector

      public Vector<Vector> getDataVector()
      返回包含表数据值的VectorVector。外部向量中包含的向量是每一行的值。换句话说,要访问第1行第5列的单元格:

      ((Vector)getDataVector().elementAt(1)).elementAt(5);

      返回:
      包含表数据值的向量的向量
      参见:
    • setDataVector

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

      请注意,将dataVector传入null值会导致未指定的行为,可能会引发异常。

      参数:
      dataVector - 新数据向量
      columnIdentifiers - 列的名称
      参见:
    • setDataVector

      public void setDataVector(Object[][] dataVector, Object[] columnIdentifiers)
      用数组dataVector中的值替换dataVector实例变量中的值。 Object[][]数组中的第一个索引是行索引,第二个是列索引。 columnIdentifiers是新列的名称。
      参数:
      dataVector - 新数据向量
      columnIdentifiers - 列的名称
      参见:
    • newDataAvailable

      public void newDataAvailable(TableModelEvent event)
      等同于fireTableChanged
      参数:
      event - 变更事件
    • newRowsAdded

      public void newRowsAdded(TableModelEvent e)
      确保新行具有正确数量的列。这通过在Vector中使用setSize方法来实现,该方法会截断太长的向量,并在太短时附加null。此方法还向所有监听器发送tableChanged通知消息。
      参数:
      e - 此TableModelEvent描述了新添加的行的位置。如果为null,则假定所有行都是新添加的
      参见:
    • 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起:
      1.3
      参见:
    • 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通知消息。
        移动示例:
      
        1. moveRow(1,3,5);
                a|B|C|D|e|f|g|h|i|j|k   - 移动前
                a|e|f|g|h|B|C|D|i|j|k   - 移动后
      
        2. moveRow(6,7,1);
                a|b|c|d|e|f|G|H|i|j|k   - 移动前
                a|G|H|b|c|d|e|f|i|j|k   - 移动后
        
      参数:
      start - 要移动的起始行索引
      end - 要移动的结束行索引
      to - 要移动的行的目的地
      抛出:
      ArrayIndexOutOfBoundsException - 如果任何元素将移出表的范围
    • removeRow

      public void removeRow(int row)
      从模型中的row处移除一行。将发送有关移除行的通知给所有监听器。
      参数:
      row - 要移除的行的行索引
      抛出:
      ArrayIndexOutOfBoundsException - 如果行无效
    • setColumnIdentifiers

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

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

      public void setColumnCount(int columnCount)
      设置模型中的列数。如果新大小大于当前大小,则在模型末尾添加新列,其单元格值为null。如果新大小小于当前大小,则丢弃索引columnCount及更大的所有列。
      参数:
      columnCount - 模型中的新列数
      自1.3起:
      1.3
      参见:
    • addColumn

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

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

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

      public int getRowCount()
      返回此数据表中的行数。
      指定者:
      getRowCount 在接口 TableModel
      返回:
      模型中的行数
      参见:
    • getColumnCount

      public int getColumnCount()
      返回此数据表中的列数。
      指定者:
      getColumnCount 在接口 TableModel
      返回:
      模型中的列数
      参见:
    • getColumnName

      public String getColumnName(int column)
      返回列名称。
      指定者:
      getColumnName 在接口 TableModel
      覆盖:
      getColumnName 在类 AbstractTableModel
      参数:
      column - 正在查询的列
      返回:
      使用columnIdentifiers中适当成员的字符串值的名称。如果columnIdentifiers没有此索引的条目,则返回超类提供的默认名称。
    • isCellEditable

      public boolean isCellEditable(int row, int column)
      无论参数值如何都返回true。
      指定者:
      isCellEditable 在接口 TableModel
      覆盖:
      isCellEditable 在类 AbstractTableModel
      参数:
      row - 要查询其值的行
      column - 要查询其值的列
      返回:
      true
      参见:
    • getValueAt

      public Object getValueAt(int row, int column)
      返回rowcolumn处单元格的属性值。
      指定者:
      getValueAt 在接口 TableModel
      参数:
      row - 要查询其值的行
      column - 要查询其值的列
      返回:
      指定单元格处的值对象
      抛出:
      ArrayIndexOutOfBoundsException - 如果给定无效的行或列
    • setValueAt

      public void setValueAt(Object aValue, int row, int column)
      设置columnrow处单元格的对象值。 aValue是新值。此方法将生成tableChanged通知。
      指定者:
      setValueAt 在接口 TableModel
      覆盖:
      setValueAt 在类 AbstractTableModel
      参数:
      aValue - 新值;可以为null
      row - 要更改其值的行
      column - 要更改其值的列
      抛出:
      ArrayIndexOutOfBoundsException - 如果给定无效的行或列
      参见:
    • convertToVector

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

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