javax.swing.table
类 DefaultTableModel
java.lang.Object
javax.swing.table.AbstractTableModel
javax.swing.table.DefaultTableModel
所有已实现的接口:
Serializable, TableModel
public class DefaultTableModelextends AbstractTableModelimplements Serializable
这是 TableModel
的一个实现,它使用一个 Vector
来存储单元格的值对象,该 Vector
由多个 Vector
组成。
警告: DefaultTableModel
返回 Object
的一个列类。DefaultTableModel
与 TableRowSorter
一起使用时将导致大量使用 toString
,这对于非 String
数据类型代价昂贵。如果与 TableRowSorter
一起使用 DefaultTableModel
,建议最好重写 getColumnClass
以返回适当的类型。
警告:此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行远程方法调用(Remote Method Invocation,RMI)。从 1.4 版本开始,已在 java.beans
包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder。
另请参见:
TableModel, getDataVector()
字段摘要 | |
|
|
|
|
从类 javax.swing.table.AbstractTableModel 继承的字段 |
|
构造方法摘要 | |
构造默认的 | |
构造一个具有 | |
构造一个 | |
构造一个 | |
构造一个 | |
构造一个 |
方法摘要 | |
|
将一列添加到模型中。 |
|
将一列添加到模型中。 |
|
将一列添加到模型中。 |
|
添加一行到模型的结尾。 |
|
添加一行到模型的结尾。 |
|
返回一个包含与该数组相同的对象的向量。 |
|
返回一个 vector,该 vector 由包含与该数组相同的对象的多个 vector 组成。 |
|
返回此数据表中的列数。 |
|
返回列名称。 |
|
返回由多个包含表数据值的 |
|
返回此数据表中的行数。 |
|
返回 |
|
在模型中的 |
|
在模型中的 |
|
无论参数值是多少都返回 true。 |
|
将 |
|
等效于 |
|
确保新行的列数正确。 |
|
移除模型中 |
|
等效于 |
|
设置模型中的列数。 |
|
替换模型中的列标识符。 |
|
替换模型中的列标识符。 |
|
用数组 |
|
用新的行 |
|
从 Java 2 platform v1.3 开始已过时。 |
|
设置模型中的行数。 |
|
设置 |
从类 javax.swing.table.AbstractTableModel 继承的方法 |
|
从类 java.lang.Object 继承的方法 |
|
字段详细信息 |
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
中元素的数量相同,并具有
rowCount
行
null
对象值。每列的名称都取自
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
中元素的数量相同,并具有
rowCount
行
null
对象值。每列的名称都取自
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
,并通过将
data
和
columnNames
传递到
setDataVector
方法来初始化该表。
参数:
data
- 表的数据,它是一个
Vector
,由包含多个
Object
值的
Vector
组成
columnNames
- 包含新的列名称的
vector
另请参见:
getDataVector(), setDataVector(java.util.Vector, java.util.Vector)
DefaultTableModel
public DefaultTableModel(Object[][] data, Object[] columnNames)
构造一个
DefaultTableModel
,并通过将
data
和
columnNames
传递到
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)
用新的行
Vector
(
dataVector
)替换当前的
dataVector
实例变量。每一行都用
dataVector
表示,
dataVector
是由多个
Object
值组成的
Vector
。
columnIdentifiers
是新列的名称。
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)
将一列添加到模型中。新列的标识符将为
columnName
。
columnData
是该列的可选数据数组。如果它为
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)
指定者:
接口
TableModel
中的
isCellEditable
覆盖:
类
AbstractTableModel
中的
isCellEditable
参数:
row
- 要查询其值的行
column
- 要查询其值的列
返回:
true 另请参见:
setValueAt(java.lang.Object, int, int)
getValueAt
public Object getValueAt(int row, int column)
返回
row
和
column
处单元格的属性值。
指定者:
接口
TableModel
中的
getValueAt
参数:
row
- 要查询其值的行
column
- 要查询其值的列
返回:
指定单元格处的值 Object 抛出:
ArrayIndexOutOfBoundsException
- 如果给定了无效的 row 或 column
setValueAt
public void setValueAt(Object aValue, int row, int column)
设置
column
和
row
处单元格的对象值。
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
- 要转换的数组
返回:
新的向量;如果
anArray
为
null
,则返回
null
convertToVector
protected static Vector convertToVector(Object[][] anArray)
返回一个 vector,该 vector 由包含与该数组相同的对象的多个 vector 组成。
参数:
anArray
- 要转换的二维数组
返回:
由多个 vector 组成的新 vector;如果
anArray
为
null
,则返回
null