javax.swing.table

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

public class DefaultTableModel
     
extends AbstractTableModel
implements Serializable

这是 TableModel 的一个实现,它使用一个 Vector 来存储单元格的值对象,该 Vector 由多个 Vector 组成。

警告: DefaultTableModel 返回 Object 的一个列类。DefaultTableModelTableRowSorter 一起使用时将导致大量使用 toString,这对于非 String 数据类型代价昂贵。如果与 TableRowSorter 一起使用 DefaultTableModel,建议最好重写 getColumnClass 以返回适当的类型。

警告:此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行远程方法调用(Remote Method Invocation,RMI)。从 1.4 版本开始,已在 java.beans 包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder

另请参见:
TableModel, getDataVector()

字段摘要
protected  Vector columnIdentifiers
          Vector,由多个列标识符组成。
protected  Vector dataVector
          Vector,由包含多个 Object 值的 Vector 组成。
 
从类 javax.swing.table.AbstractTableModel 继承的字段
listenerList
 
构造方法摘要
DefaultTableModel()
          构造默认的 DefaultTableModel,它是一个零列零行的表。
DefaultTableModel(int rowCount, int columnCount)
          构造一个具有 rowCount 行和 columnCount 列的 null 对象值的 DefaultTableModel
DefaultTableModel(Object[][] data, Object[] columnNames)
          构造一个 DefaultTableModel,并通过将 datacolumnNames 传递到 setDataVector 方法来初始化该表。
DefaultTableModel(Object[] columnNames, int rowCount)
          构造一个 DefaultTableModel,它的列数与 columnNames 中元素的数量相同,并具有 rowCountnull 对象值。
DefaultTableModel(Vector columnNames, int rowCount)
          构造一个 DefaultTableModel,它的列数与 columnNames 中元素的数量相同,并具有 rowCountnull 对象值。
DefaultTableModel(Vector data, Vector columnNames)
          构造一个 DefaultTableModel,并通过将 datacolumnNames 传递到 setDataVector 方法来初始化该表。
 
方法摘要
 void addColumn(Object columnName)
          将一列添加到模型中。
 void addColumn(Object columnName, Object[] columnData)
          将一列添加到模型中。
 void addColumn(Object columnName, Vector columnData)
          将一列添加到模型中。
 void addRow(Object[] rowData)
          添加一行到模型的结尾。
 void addRow(Vector rowData)
          添加一行到模型的结尾。
protected static Vector convertToVector(Object[] anArray)
          返回一个包含与该数组相同的对象的向量。
protected static Vector convertToVector(Object[][] anArray)
          返回一个 vector,该 vector 由包含与该数组相同的对象的多个 vector 组成。
 int getColumnCount()
          返回此数据表中的列数。
 String getColumnName(int column)
          返回列名称。
 Vector getDataVector()
          返回由多个包含表数据值的 Vector 组成的 Vector
 int getRowCount()
          返回此数据表中的行数。
 Object getValueAt(int row, int column)
          返回 rowcolumn 处单元格的属性值。
 void insertRow(int row, Object[] rowData)
          在模型中的 row 位置插入一行。
 void insertRow(int row, Vector rowData)
          在模型中的 row 位置插入一行。
 boolean isCellEditable(int row, int column)
          无论参数值是多少都返回 true。
 void moveRow(int start, int end, int to)
          将 start(包含)到 end(包含)范围中的一行或多行移到模型中的 to 位置。
 void newDataAvailable(TableModelEvent event)
          等效于 fireTableChanged
 void newRowsAdded(TableModelEvent e)
          确保新行的列数正确。
 void removeRow(int row)
          移除模型中 row 位置的行。
 void rowsRemoved(TableModelEvent event)
          等效于 fireTableChanged
 void setColumnCount(int columnCount)
          设置模型中的列数。
 void setColumnIdentifiers(Object[] newIdentifiers)
          替换模型中的列标识符。
 void setColumnIdentifiers(Vector columnIdentifiers)
          替换模型中的列标识符。
 void setDataVector(Object[][] dataVector, Object[] columnIdentifiers)
          用数组 dataVector 中的值替换 dataVector 实例变量中的值。
 void setDataVector(Vector dataVector, Vector columnIdentifiers)
          用新的行 VectordataVector)替换当前的 dataVector 实例变量。
 void setNumRows(int rowCount)
          从 Java 2 platform v1.3 开始已过时。
 void setRowCount(int rowCount)
          设置模型中的行数。
 void setValueAt(Object aValue, int row, int column)
          设置 columnrow 处单元格的对象值。
 
从类 javax.swing.table.AbstractTableModel 继承的方法
addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getColumnClass, getListeners, getTableModelListeners, removeTableModelListener
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

dataVector

protected Vector dataVector
Vector,由包含多个 Object 值的 Vector 组成。


columnIdentifiers

protected Vector columnIdentifiers
Vector,由多个列标识符组成。

构造方法详细信息

DefaultTableModel

public DefaultTableModel()
构造默认的 DefaultTableModel,它是一个零列零行的表。


DefaultTableModel

public DefaultTableModel(int rowCount,
                         int columnCount)
构造一个具有 rowCount 行和 columnCount 列的 null 对象值的 DefaultTableModel

参数:
rowCount - 表的行数
columnCount - 表的列数
另请参见:
setValueAt(java.lang.Object, int, int)

DefaultTableModel

public DefaultTableModel(Vector columnNames,
                         int rowCount)
构造一个 DefaultTableModel,它的列数与 columnNames 中元素的数量相同,并具有 rowCountnull 对象值。每列的名称都取自 columnNames 向量。

参数:
columnNames - 包含新的列名称的 vector;如果该参数为 null,则该模型没有列
rowCount - 表的行数
另请参见:
setDataVector(java.util.Vector, java.util.Vector), setValueAt(java.lang.Object, int, int)

DefaultTableModel

public DefaultTableModel(Object[] columnNames,
                         int rowCount)
构造一个 DefaultTableModel,它的列数与 columnNames 中元素的数量相同,并具有 rowCountnull 对象值。每列的名称都取自 columnNames 数组。

参数:
columnNames - 包含新的列名称的 array;如果该参数为 null,则该模型没有列
rowCount - 表的行数
另请参见:
setDataVector(java.util.Vector, java.util.Vector), setValueAt(java.lang.Object, int, int)

DefaultTableModel

public DefaultTableModel(Vector data,
                         Vector columnNames)
构造一个 DefaultTableModel,并通过将 datacolumnNames 传递到 setDataVector 方法来初始化该表。

参数:
data - 表的数据,它是一个 Vector,由包含多个 Object 值的 Vector 组成
columnNames - 包含新的列名称的 vector
另请参见:
getDataVector(), setDataVector(java.util.Vector, java.util.Vector)

DefaultTableModel

public DefaultTableModel(Object[][] data,
                         Object[] columnNames)
构造一个 DefaultTableModel,并通过将 datacolumnNames 传递到 setDataVector 方法来初始化该表。 Object[][] 数组中的第一个索引是行索引,第二个索引是列索引。

参数:
data - 表的数据
columnNames - 列的名称
另请参见:
getDataVector(), setDataVector(java.util.Vector, java.util.Vector)
方法详细信息

getDataVector

public Vector getDataVector()
返回由多个包含表数据值的 Vector 组成的 Vector。外层 vector 中包含的每个 vector 都是一行的值。换句话说,要获得第 1 行、第 5 列的单元格,可以使用以下代码:

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

返回:
vector,由包含表数据值的多个 vector 组成
另请参见:
newDataAvailable(javax.swing.event.TableModelEvent), newRowsAdded(javax.swing.event.TableModelEvent), setDataVector(java.util.Vector, java.util.Vector)

setDataVector

public void setDataVector(Vector dataVector,
                          Vector columnIdentifiers)
用新的行 VectordataVector)替换当前的 dataVector 实例变量。每一行都用 dataVector 表示, dataVector 是由多个 Object 值组成的 VectorcolumnIdentifiers 是新列的名称。 columnIdentifiers 中的第一个名称映射为 dataVector 中第 0 列。将 dataVector 中每一行调整为与 columnIdentifiers 中的列数匹配,这通过在 Vector 太长时截短它、在 Vector 太短时添加 null 值来实现。

注意,为 dataVector 传入 null 值会导致未指定的行为,可能抛出异常。

参数:
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)
确保新行的列数正确。这是通过使用 Vector 中的 setSize 方法来完成的,该方法在 Vector 太长时将其截短,在 Vector 太短时追加 null。此方法还向所有侦听器发送 tableChanged 通知消息。

参数:
e - 此 TableModelEvent 描述添加行的位置。如果为 null,则此方法假定所有行都是新添加的
另请参见:
getDataVector()

rowsRemoved

public void rowsRemoved(TableModelEvent event)
等效于 fireTableChanged

参数:
event - 更改事件

setNumRows

public void setNumRows(int rowCount)
从 Java 2 platform v1.3 开始已过时。请使用 setRowCount 替代。


setRowCount

public void setRowCount(int rowCount)
设置模型中的行数。如果新的大小大于当前大小,则将新行添加到该模型的结尾,如果新的大小小于当前大小,则丢弃索引 rowCount 处及其之后的所有行。

从以下版本开始:
1.3
另请参见:
setColumnCount(int)

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 - 如果 row 无效

insertRow

public void insertRow(int row,
                      Object[] rowData)
在模型中的 row 位置插入一行。如果未指定 rowData,则新行将包含 null 值。将生成添加行的通知。

参数:
row - 要插入的行的行索引
rowData - 要添加的行数据(可选)
抛出:
ArrayIndexOutOfBoundsException - 如果 row 无效

moveRow

public void moveRow(int start,
                    int end,
                    int to)
start(包含)到 end(包含)范围中的一行或多行移到模型中的 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 - 如果 row 无效

setColumnIdentifiers

public void setColumnIdentifiers(Vector columnIdentifiers)
替换模型中的列标识符。如果 newIdentifier 数大于当前的列数,则将新列添加到模型中每一行的结尾。如果 newIdentifier 数小于当前的列数,则丢弃每行结尾处所有多余的列。

参数:
columnIdentifiers - 列标识符的向量。如果为 null,则将该模型设置为具有零列
另请参见:
setNumRows(int)

setColumnIdentifiers

public void setColumnIdentifiers(Object[] newIdentifiers)
替换模型中的列标识符。如果 newIdentifier 数大于当前的列数,则将新列添加到模型中每一行的结尾。如果 newIdentifier 数小于当前的列数,则丢弃每行结尾处所有多余的列。

参数:
newIdentifiers - 列标识符的数组。如果为 null,则将该模型设置为具有零列
另请参见:
setNumRows(int)

setColumnCount

public void setColumnCount(int columnCount)
设置模型中的列数。如果新大小大于当前大小,则将新列添加到模型结尾并使其具有 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,它可以为 null。 columnData 是列的可选数据向量。如果它为 null,则使用 null 值填充该列。否则,将新数据添加到模型中,第一个元素将添加到第 0 行,依此类推。此方法将向所有侦听器发送 tableChanged 通知消息。

参数:
columnName - 要添加的列的标识符
columnData - 要添加的列的数据(可选)

addColumn

public void addColumn(Object columnName,
                      Object[] columnData)
将一列添加到模型中。新列的标识符将为 columnNamecolumnData 是该列的可选数据数组。如果它为 null,则使用 null 值填充该列。否则,将新数据添加到模型中,第一个元素添加到第 0 行,依此类推。此方法将向所有侦听器发送 tableChanged 通知消息。

另请参见:
addColumn(Object, Vector)

getRowCount

public int getRowCount()
返回此数据表中的行数。

指定者:
接口 TableModel 中的 getRowCount
返回:
该模型中的行数
另请参见:
TableModel.getColumnCount()

getColumnCount

public int getColumnCount()
返回此数据表中的列数。

指定者:
接口 TableModel 中的 getColumnCount
返回:
该模型中的列数
另请参见:
TableModel.getRowCount()

getColumnName

public String getColumnName(int column)
返回列名称。

指定者:
接口 TableModel 中的 getColumnName
覆盖:
AbstractTableModel 中的 getColumnName
参数:
column - 被查询的列
返回:
此列的名称,它使用 columnIdentifiers 中适当成员的字符串值。如果 columnIdentifiers 不具有此索引的条目,则返回由超类提供的默认名称

isCellEditable

public boolean isCellEditable(int row,
                              int column)
无论参数值是多少都返回 true。

指定者:
接口 TableModel 中的 isCellEditable
覆盖:
AbstractTableModel 中的 isCellEditable
参数:
row - 要查询其值的行
column - 要查询其值的列
返回:
true
另请参见:
setValueAt(java.lang.Object, int, int)

getValueAt

public Object getValueAt(int row,
                         int column)
返回 rowcolumn 处单元格的属性值。

指定者:
接口 TableModel 中的 getValueAt
参数:
row - 要查询其值的行
column - 要查询其值的列
返回:
指定单元格处的值 Object
抛出:
ArrayIndexOutOfBoundsException - 如果给定了无效的 row 或 column

setValueAt

public void setValueAt(Object aValue,
                       int row,
                       int column)
设置 columnrow 处单元格的对象值。 aValue 是新值。此方法将生成一个 tableChanged 通知。

指定者:
接口 TableModel 中的 setValueAt
覆盖:
AbstractTableModel 中的 setValueAt
参数:
aValue - 新值,可以为 null
row - 要更改其值的行
column - 要更改其值的列
抛出:
ArrayIndexOutOfBoundsException - 如果给定了无效的 row 或 column
另请参见:
TableModel.getValueAt(int, int), TableModel.isCellEditable(int, int)

convertToVector

protected static Vector convertToVector(Object[] anArray)
返回一个包含与该数组相同的对象的向量。

参数:
anArray - 要转换的数组
返回:
新的向量;如果 anArraynull,则返回 null

convertToVector

protected static Vector convertToVector(Object[][] anArray)
返回一个 vector,该 vector 由包含与该数组相同的对象的多个 vector 组成。

参数:
anArray - 要转换的二维数组
返回:
由多个 vector 组成的新 vector;如果 anArraynull,则返回 null