java.lang.Object
javax.swing.table.AbstractTableModel
- 所有已实现的接口:
-
Serializable
,TableModel
- 直接已知的子类:
-
DefaultTableModel
这个抽象类为
TableModel
接口中的大多数方法提供了默认实现。它负责管理监听器并提供一些便利来生成TableModelEvents
并将其分派给监听器。要创建一个作为AbstractTableModel
子类的具体TableModel
,您只需要为以下三个方法提供实现:
public int getRowCount(); public int getColumnCount(); public Object getValueAt(int row, int column);
警告: 该类的序列化对象将不兼容未来的Swing版本。当前的序列化支持适用于短期存储或在运行相同Swing版本的应用程序之间的RMI。从1.4开始,已将所有JavaBeans的长期存储支持添加到java.beans
包中。请参见XMLEncoder
。
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
向列表中添加一个监听器,每当数据模型发生更改时通知。int
findColumn
(String columnName) 根据名称返回列。void
fireTableCellUpdated
(int row, int column) 通知所有监听器,位于[row, column]
位置的单元格的值已更新。void
将给定的通知事件转发给所有为此表格模型注册为监听器的TableModelListeners
。void
通知所有监听器,表格行中所有单元格的值可能已更改。void
fireTableRowsDeleted
(int firstRow, int lastRow) 通知所有监听器,范围为[firstRow, lastRow]
(包括)的行已被删除。void
fireTableRowsInserted
(int firstRow, int lastRow) 通知所有监听器,范围为[firstRow, lastRow]
(包括)的行已被插入。void
fireTableRowsUpdated
(int firstRow, int lastRow) 通知所有监听器,范围为[firstRow, lastRow]
(包括)的行已更新。void
通知所有监听器,表格的结构已更改。Class
<?> getColumnClass
(int columnIndex) 返回Object.class
,无论columnIndex
如何。getColumnName
(int column) 使用电子表格约定返回列的默认名称:A,B,C,...<T extends EventListener>
T[]getListeners
(Class<T> listenerType) 返回当前注册为FooListener
的所有对象数组,该数组在AbstractTableModel
上。返回在此模型上注册的所有表格模型监听器的数组。boolean
isCellEditable
(int rowIndex, int columnIndex) 返回false。void
从列表中删除一个监听器,每当数据模型发生更改时通知。void
setValueAt
(Object aValue, int rowIndex, int columnIndex) 提供此空实现,以便用户无需实现此方法,如果他们的数据模型不可编辑。Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods declared in interface javax.swing.table.TableModel
getColumnCount, getRowCount, getValueAt
-
Field Details
-
listenerList
监听器列表
-
-
Constructor Details
-
AbstractTableModel
protected AbstractTableModel()子类调用的构造函数。
-
-
Method Details
-
getColumnName
使用电子表格约定返回列的默认名称:A,B,C,... Z,AA,AB等。如果找不到column
,则返回空字符串。- 指定者:
-
getColumnName
在接口TableModel
中 - 参数:
-
column
- 正在查询的列 - 返回:
-
包含
column
的默认名称的字符串
-
findColumn
根据名称返回列。如果经常调用此方法,则应重写实现。此方法不在TableModel
接口中,并且JTable
不使用此方法。- 参数:
-
columnName
- 包含要定位的列名称的字符串 - 返回:
-
具有
columnName
的列,如果未找到则返回-1
-
getColumnClass
返回Object.class
,无论columnIndex
如何。- 指定者:
-
getColumnClass
在接口TableModel
中 - 参数:
-
columnIndex
- 正在查询的列 - 返回:
-
Object.class
-
isCellEditable
public boolean isCellEditable(int rowIndex, int columnIndex) 返回false。这是所有单元格的默认实现。- 指定者:
-
isCellEditable
在接口TableModel
中 - 参数:
-
rowIndex
- 正在查询的行 -
columnIndex
- 正在查询的列 - 返回:
- false
- 参见:
-
setValueAt
提供此空实现,以便用户无需实现此方法,如果他们的数据模型不可编辑。- 指定者:
-
setValueAt
在接口TableModel
中 - 参数:
-
aValue
- 要分配给单元格的值 -
rowIndex
- 单元格的行 -
columnIndex
- 单元格的列 - 参见:
-
addTableModelListener
向列表中添加一个监听器,每当数据模型发生更改时通知。- 指定者:
-
addTableModelListener
在接口TableModel
中 - 参数:
-
l
- TableModelListener
-
removeTableModelListener
从列表中删除一个监听器,每当数据模型发生更改时通知。- 指定者:
-
removeTableModelListener
在接口TableModel
中 - 参数:
-
l
- TableModelListener
-
getTableModelListeners
返回在此模型上注册的所有表格模型监听器的数组。- 返回:
-
所有此模型的
TableModelListener
或如果当前未注册任何表格模型监听器,则返回空数组 - 自1.4起:
- 1.4
- 参见:
-
fireTableDataChanged
public void fireTableDataChanged()通知所有监听器,表格行中所有单元格的值可能已更改。行数也可能已更改,JTable
应该从头开始重新绘制表格。假定表格的结构(如列的顺序)保持不变。- 参见:
-
fireTableStructureChanged
public void fireTableStructureChanged()通知所有监听器,表格的结构已更改。表格中的列数,新列的名称和类型可能与先前状态不同。如果JTable
接收到此事件并且其autoCreateColumnsFromModel
标志已设置,则它会丢弃任何已有的表格列,并按照它们在模型中出现的顺序重新分配默认列。这与在JTable
上调用setModel(TableModel)
相同。- 参见:
-
fireTableRowsInserted
public void fireTableRowsInserted(int firstRow, int lastRow) 通知所有监听器,范围为[firstRow, lastRow]
(包括)的行已插入。- 参数:
-
firstRow
- 第一行 -
lastRow
- 最后一行 - 参见:
-
fireTableRowsUpdated
public void fireTableRowsUpdated(int firstRow, int lastRow) 通知所有监听器,范围为[firstRow, lastRow]
(包括)的行已更新。- 参数:
-
firstRow
- 第一行 -
lastRow
- 最后一行 - 参见:
-
fireTableRowsDeleted
public void fireTableRowsDeleted(int firstRow, int lastRow) 通知所有监听器,范围为[firstRow, lastRow]
(包括)的行已删除。- 参数:
-
firstRow
- 第一行 -
lastRow
- 最后一行 - 参见:
-
fireTableCellUpdated
public void fireTableCellUpdated(int row, int column) 通知所有监听器,单元格在[row, column]
处的值已更新。- 参数:
-
row
- 已更新的单元格所在的行 -
column
- 已更新的单元格所在的列 - 参见:
-
fireTableChanged
将给定的通知事件转发给所有已注册为此表格模型的TableModelListeners
。- 参数:
-
e
- 要转发的事件 - 参见:
-
getListeners
返回当前在此AbstractTableModel
上注册为FooListener
的所有对象的数组。使用addFooListener
方法注册FooListener
。您可以使用类字面量(例如
FooListener.class
)指定listenerType
参数。例如,您可以使用以下代码查询模型m
的表格模型监听器:TableModelListener[] tmls = (TableModelListener[])(m.getListeners(TableModelListener.class));
如果不存在此类监听器,则此方法返回一个空数组。- 类型参数:
-
T
- 监听器类型 - 参数:
-
listenerType
- 请求的监听器类型 - 返回:
-
返回在此组件上注册为
FooListener
的所有对象的数组,如果没有添加此类监听器,则返回一个空数组 - 抛出:
-
ClassCastException
- 如果listenerType
未指定实现java.util.EventListener
的类或接口 - 自:
- 1.3
- 参见:
-