- java.lang.Object
-
- javax.swing.table.AbstractTableModel
-
- javax.swing.table.DefaultTableModel
-
- All Implemented Interfaces:
-
Serializable
,TableModel
public class DefaultTableModel extends AbstractTableModel implements Serializable
这是一个TableModel
的实现,它使用Vector
Vectors
来存储单元格值对象。警告:
DefaultTableModel
返回列类为Object
。 当DefaultTableModel
与TableRowSorter
DefaultTableModel
使用时,这将导致大量使用toString
,对于非String
数据类型来说是昂贵的。 如果您使用DefaultTableModel
与TableRowSorter
,强烈建议您覆盖getColumnClass
以返回相应的类型。警告:此类的序列化对象与将来的Swing版本不兼容。 当前的序列化支持适用于运行相同版本的Swing的应用程序之间的短期存储或RMI。 从1.4开始,所有JavaBeans的长期存储支持已被添加到
java.beans
包中。 请参阅XMLEncoder
。- 另请参见:
-
TableModel
,getDataVector()
, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field 描述 protected Vector
columnIdentifiers
列标识符的Vector
。protected Vector<Vector>
dataVector
Vector
的Vectors
的Object
值。-
Fields inherited from class javax.swing.table.AbstractTableModel
listenerList
-
-
构造方法摘要
构造方法 Constructor 描述 DefaultTableModel()
构造默认的DefaultTableModel
,它是零列和零行的表。DefaultTableModel(int rowCount, int columnCount)
构造DefaultTableModel
其中rowCount
和columnCount
的null
对象值。DefaultTableModel(Object[][] data, Object[] columnNames)
构建一个DefaultTableModel
并通过将data
和columnNames
传递给setDataVector
方法来初始化表。DefaultTableModel(Object[] columnNames, int rowCount)
构造一个DefaultTableModel
与尽可能多的列有在元件columnNames
和rowCount
的null
对象值。DefaultTableModel(Vector<?> columnNames, int rowCount)
构造一个DefaultTableModel
与尽可能多的列有在元件columnNames
和rowCount
的null
对象值。DefaultTableModel(Vector<? extends Vector> data, Vector<?> columnNames)
构建一个DefaultTableModel
并通过将data
和columnNames
通过setDataVector
方法初始化表。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 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<Object>
convertToVector(Object[] anArray)
返回一个包含与数组相同的对象的向量。protected static Vector<Vector<Object>>
convertToVector(Object[][] anArray)
返回包含与数组相同对象的向量向量。int
getColumnCount()
返回此数据表中的列数。String
getColumnName(int column)
返回列名。Vector<Vector>
getDataVector()
返回Vector
的Vectors
,其中包含表的数据值。int
getRowCount()
返回此数据表中的行数。Object
getValueAt(int row, int column)
返回单元格的属性值为row
和column
。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<? extends Vector> dataVector, Vector<?> columnIdentifiers)
用新的Vector
行替换当前的dataVector
实例变量,dataVector
。void
setNumRows(int rowCount)
作为Java 2平台v1.3的过时。void
setRowCount(int rowCount)
设置模型中的行数。void
setValueAt(Object aValue, int row, int column)
设置单元格的对象值为column
和row
。-
Methods inherited from class javax.swing.table.AbstractTableModel
addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getColumnClass, getListeners, getTableModelListeners, removeTableModelListener
-
-
-
-
构造方法详细信息
-
DefaultTableModel
public DefaultTableModel()
构造一个默认的DefaultTableModel
,它是零列和零行的表。
-
DefaultTableModel
public DefaultTableModel(int rowCount, int columnCount)
构造一个DefaultTableModel
其中rowCount
和columnCount
的null
对象值。- 参数
-
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<? extends 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<? extends java.util.Vector>, java.util.Vector<?>)
,setValueAt(java.lang.Object, int, int)
-
DefaultTableModel
public DefaultTableModel(Vector<? extends Vector> data, Vector<?> columnNames)
构建一个DefaultTableModel
并通过将data
和columnNames
通过setDataVector
方法初始化表。- 参数
-
data
- 该表的数据,Vector
的Vector
s的Object
值 -
columnNames
-vector
包含新列的名称 - 另请参见:
-
getDataVector()
,setDataVector(java.util.Vector<? extends 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<? extends java.util.Vector>, java.util.Vector<?>)
-
-
方法详细信息
-
getDataVector
public Vector<Vector> getDataVector()
返回Vector
的Vectors
包含表的数据值。 外向量中包含的向量各自是单行值。 换句话说,要进入第1列第5列的单元格:((Vector)getDataVector().elementAt(1)).elementAt(5);
-
setDataVector
public void setDataVector(Vector<? extends Vector> dataVector, Vector<?> columnIdentifiers)
用新的Vector
行替换当前的dataVector
实例变量,dataVector
。 每行代表dataVector
作为Vector
的Object
值。columnIdentifiers
是新列的名称。 在第一名称columnIdentifiers
在映射到第0列dataVector
。dataVector
每一行dataVector
调整为匹配columnIdentifiers
的列数,columnIdentifiers
是截断Vector
如果太长),或者如果太短,则添加null
值。请注意,传递
null
值dataVector
导致未指定的行为,这可能是一个例外。- 参数
-
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)
将一行或多行从包含范围start
到end
到模型中的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)
-
getRowCount
public int getRowCount()
返回此数据表中的行数。- Specified by:
-
getRowCount
在接口TableModel
- 结果
- 模型中的行数
- 另请参见:
-
TableModel.getColumnCount()
-
getColumnCount
public int getColumnCount()
返回此数据表中的列数。- Specified by:
-
getColumnCount
在接口TableModel
- 结果
- 模型中的列数
- 另请参见:
-
TableModel.getRowCount()
-
getColumnName
public String getColumnName(int column)
返回列名。- Specified by:
-
getColumnName
在接口TableModel
- 重写:
-
getColumnName
在AbstractTableModel
- 参数
-
column
- 正在查询的列 - 结果
-
该列的名称使用
columnIdentifiers
相应成员的字符串值。 如果columnIdentifiers
没有此索引的条目,则返回超类提供的默认名称。
-
isCellEditable
public boolean isCellEditable(int row, int column)
无论参数值如何,都会返回true。- Specified by:
-
isCellEditable
在接口TableModel
- 重写:
-
isCellEditable
在AbstractTableModel
- 参数
-
row
- 要查询其值的行 -
column
- 要查询其值的列 - 结果
- 真正
- 另请参见:
-
setValueAt(java.lang.Object, int, int)
-
getValueAt
public Object getValueAt(int row, int column)
返回单元格的属性值为row
和column
。- Specified by:
-
getValueAt
在接口TableModel
- 参数
-
row
- 要查询其值的行 -
column
- 要查询其值的列 - 结果
- 在指定单元格的值Object
- 异常
-
ArrayIndexOutOfBoundsException
- 如果给出无效的行或列
-
setValueAt
public void setValueAt(Object aValue, int row, int column)
设置单元格的对象值为column
和row
。aValue
是新值。 此方法将生成一个tableChanged
通知。- Specified by:
-
setValueAt
在接口TableModel
- 重写:
-
setValueAt
在AbstractTableModel
- 参数
-
aValue
- 新价值; 这可以是null -
row
- 要更改其值的行 -
column
- 其值要更改的列 - 异常
-
ArrayIndexOutOfBoundsException
- 如果给出无效的行或列 - 另请参见:
-
TableModel.getValueAt(int, int)
,TableModel.isCellEditable(int, int)
-
convertToVector
protected static Vector<Object> convertToVector(Object[] anArray)
返回一个包含与数组相同的对象的向量。- 参数
-
anArray
- 要转换的数组 - 结果
-
新的矢量
如果
anArray
是null
,则返回null
-
-