模块 java.desktop

类 DefaultTableModel

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

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

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

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

参见:
  • 字段详细信息

    • dataVector

      protected Vector <Vector > dataVector
      ObjectVectorsVector 值。
    • columnIdentifiers

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

  • 方法详情

    • getDataVector

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

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

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

      public void setDataVector(Vector <? extends Vector > dataVector, Vector <?> columnIdentifiers)
      用新的 VectordataVector 替换当前的 dataVector 实例变量。每行在 dataVector 中表示为 VectorObject 值。 columnIdentifiers 是新列的名称。 columnIdentifiers 中的名字映射到 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 s。此方法还向所有监听器发出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
      参见:
    • addRow

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

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

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

      public void insertRow(int row, Object [] rowData)
      在模型中的 row 处插入一行。除非指定 rowData,否则新行将包含 null 值。将生成正在添加的行的通知。
      参数:
      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 ,将模型设置为零列
      参见:
    • setColumnIdentifiers

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

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

      public void addColumn(Object  columnName)
      向模型添加一列。新列将具有标识符 columnName ,它可能为空。此方法将向所有监听器发送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)
      向模型添加一列。新列的标识符为 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 - 新值;这可以为空
      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