- java.lang.Object
-
- javax.swing.table.AbstractTableModel
-
- javax.swing.table.DefaultTableModel
-
- All Implemented Interfaces:
-
Serializable,TableModel
public class DefaultTableModel extends AbstractTableModel implements Serializable
这是一个TableModel的实现,它使用VectorVectors来存储单元格值对象。警告:
DefaultTableModel返回列类为Object。 当DefaultTableModel与TableRowSorterDefaultTableModel使用时,这将导致大量使用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 VectorcolumnIdentifiers列标识符的Vector。protected Vector<Vector>dataVectorVector的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 方法 描述 voidaddColumn(Object columnName)向模型添加一列。voidaddColumn(Object columnName, Object[] columnData)向模型添加一列。voidaddColumn(Object columnName, Vector<?> columnData)向模型添加一列。voidaddRow(Object[] rowData)在模型的末尾添加一行。voidaddRow(Vector<?> rowData)在模型的末尾添加一行。protected static Vector<Object>convertToVector(Object[] anArray)返回一个包含与数组相同的对象的向量。protected static Vector<Vector<Object>>convertToVector(Object[][] anArray)返回包含与数组相同对象的向量向量。intgetColumnCount()返回此数据表中的列数。StringgetColumnName(int column)返回列名。Vector<Vector>getDataVector()返回Vector的Vectors,其中包含表的数据值。intgetRowCount()返回此数据表中的行数。ObjectgetValueAt(int row, int column)返回单元格的属性值为row和column。voidinsertRow(int row, Object[] rowData)在模型中插入一行row。voidinsertRow(int row, Vector<?> rowData)在模型中插入一行row。booleanisCellEditable(int row, int column)无论参数值如何,都会返回true。voidmoveRow(int start, int end, int to)将一行或多行从包含范围start到end到模型中的to位置。voidnewDataAvailable(TableModelEvent event)相当于fireTableChanged。voidnewRowsAdded(TableModelEvent e)确保新行的列数正确。voidremoveRow(int row)从模型中删除行row。voidrowsRemoved(TableModelEvent event)相当于fireTableChanged。voidsetColumnCount(int columnCount)设置模型中的列数。voidsetColumnIdentifiers(Object[] newIdentifiers)替换模型中的列标识符。voidsetColumnIdentifiers(Vector<?> columnIdentifiers)替换模型中的列标识符。voidsetDataVector(Object[][] dataVector, Object[] columnIdentifiers)使用数组dataVector的值替换dataVector实例变量中的值。voidsetDataVector(Vector<? extends Vector> dataVector, Vector<?> columnIdentifiers)用新的Vector行替换当前的dataVector实例变量,dataVector。voidsetNumRows(int rowCount)作为Java 2平台v1.3的过时。voidsetRowCount(int rowCount)设置模型中的行数。voidsetValueAt(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和rowCountnull对象值中的元素的列数。 每列的名称将从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的Vectors的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的数量大于当前的列数,则新列将添加到模型中每行的末尾。 如果newIdentifiers的数量少于当前的列数,那么行的末尾的所有额外的列将被丢弃。- 参数
-
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
-
-