java.lang.Object javax.swing.table.AbstractTableModel
public abstract class AbstractTableModel
此抽象类为 TableModel
接口中的大多数方法提供默认实现。它负责管理侦听器,并为生成 TableModelEvents
以及将其调度到侦听器提供方便。要创建一个具体的 TableModel
作为 AbstractTableModel
的子类,只需提供对以下三个方法的实现:
public int getRowCount(); public int getColumnCount(); public Object getValueAt(int row, int column);
警告:此类的已序列化对象与以后的 Swing 版本不兼容。当前的序列化支持适用于短期存储或运行相同 Swing 版本的应用程序之间的 RMI。从 1.4 版本开始,已在 java.beans
包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder
。
字段摘要 | |
---|---|
protected EventListenerList |
listenerList 侦听器的列表 |
构造方法摘要 | |
---|---|
AbstractTableModel() |
方法摘要 | ||
---|---|---|
void |
addTableModelListener(TableModelListener l) 每次数据模型发生更改时,就向被通知的列表添加一个侦听器。 |
|
int |
findColumn(String columnName) 返回具有给定名称的列。 |
|
void |
fireTableCellUpdated(int row, int column) 通知所有侦听器,已更新 [row, column] 处的单元格值。 |
|
void |
fireTableChanged(TableModelEvent e) 将给定的通知事件转发到所有将自身注册为此表模型的侦听器的 TableModelListeners 。 |
|
void |
fireTableDataChanged() 通知所有侦听器,表的所有行单元格值可能已更改。 |
|
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 |
fireTableStructureChanged() 通知所有侦听器,表的结构已更改。 |
|
Class<?> |
getColumnClass(int columnIndex) 返回 Object.class 而不管 columnIndex 是多少。 |
|
String |
getColumnName(int column) 返回列默认名称,其中列使用以下工作表约定:A、B、C……Z、AA、AB 等等。 |
|
|
getListeners(Class<T> listenerType) 返回一个包含当前注册为此 AbstractTableModel 上的 FooListener 的所有对象的数组。 |
|
TableModelListener[] |
getTableModelListeners() 返回一个包含在此模型上注册的所有表模型侦听器的数组。 |
|
boolean |
isCellEditable(int rowIndex, int columnIndex) 返回 false。 |
|
void |
removeTableModelListener(TableModelListener l) 每次数据模型发生更改时,就从被通知的列表移除一个侦听器。 |
|
void |
setValueAt(Object aValue, int rowIndex, int columnIndex) 由于提供了此空实现,因此,如果用户的数据模型是不可编辑的,则他们不必实现此方法。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
从接口 javax.swing.table.TableModel 继承的方法 |
---|
getColumnCount, getRowCount, getValueAt |
字段详细信息 |
---|
protected EventListenerList listenerList
构造方法详细信息 |
---|
public AbstractTableModel()
方法详细信息 |
---|
public String getColumnName(int column)
column
,则返回一个空字符串。
TableModel
中的
getColumnName
column
- 被查询的列
column
默认名称的字符串
public int findColumn(String columnName)
TableModel
接口中,也不被
JTable
使用。
columnName
- 包含要查找的列名称的字符串
columnName
的列,如果未找到该列,则返回 -1
public Class<?> getColumnClass(int columnIndex)
Object.class
而不管
columnIndex
是多少。
TableModel
中的
getColumnClass
columnIndex
- 被查询的列
public boolean isCellEditable(int rowIndex, int columnIndex)
TableModel
中的
isCellEditable
rowIndex
- 被查询的行
columnIndex
- 被查询的列
TableModel.setValueAt(java.lang.Object, int, int)
public void setValueAt(Object aValue, int rowIndex, int columnIndex)
TableModel
中的
setValueAt
aValue
- 要分配给单元格的值
rowIndex
- 单元格所在行
columnIndex
- 单元格所在列
TableModel.getValueAt(int, int)
,
TableModel.isCellEditable(int, int)
public void addTableModelListener(TableModelListener l)
TableModel
中的
addTableModelListener
l
- TableModelListener
public void removeTableModelListener(TableModelListener l)
TableModel
中的
removeTableModelListener
l
- TableModelListener
public TableModelListener[] getTableModelListeners()
TableModelListener
,如果当前没有已注册的表模型侦听器,则返回一个空数组
addTableModelListener(javax.swing.event.TableModelListener)
,
removeTableModelListener(javax.swing.event.TableModelListener)
public void fireTableDataChanged()
JTable
应该从头开始重新绘制该表。假定表的结构(如同列的顺序)是相同的。
public void fireTableStructureChanged()
JTable
接收此事件,并且设置了其
autoCreateColumnsFromModel
标志,则它丢弃之前具有的所有表列,并按列在模型中出现的顺序重新分配默认列。这与对
JTable
调用
setModel(TableModel)
具有相同的效果。
TableModelEvent
,
EventListenerList
public void fireTableRowsInserted(int firstRow, int lastRow)
[firstRow, lastRow]
(包括)的行。
firstRow
- 第一行
lastRow
- 最后一行
TableModelEvent
,
EventListenerList
public void fireTableRowsUpdated(int firstRow, int lastRow)
[firstRow, lastRow]
(包括)的行。
firstRow
- 第一行
lastRow
- 最后一行
TableModelEvent
,
EventListenerList
public void fireTableRowsDeleted(int firstRow, int lastRow)
[firstRow, lastRow]
(包括)的行。
firstRow
- 第一行
lastRow
- 最后一行
TableModelEvent
,
EventListenerList
public void fireTableCellUpdated(int row, int column)
[row, column]
处的单元格值。
row
- 已更新的单元格所在行
column
- 已更新的单元格所在列
TableModelEvent
,
EventListenerList
public void fireTableChanged(TableModelEvent e)
TableModelListeners
。
e
- 要转发的事件
addTableModelListener(javax.swing.event.TableModelListener)
,
TableModelEvent
,
EventListenerList
public <T extends EventListener> T[] getListeners(Class<T> listenerType)
AbstractTableModel
上的
FooListener
的所有对象的数组。
FooListener
是用
addFooListener
方法注册的。
可以使用 class 字面值(如 FooListener.class
)来指定 listenerType
参数。例如,可以通过以下代码查询模型 m
,以获得其表模型侦听器:
TableModelListener[] tmls = (TableModelListener[])(m.getListeners(TableModelListener.class));如果不存在这样的侦听器,则此方法将返回一个空数组。
listenerType
- 所请求侦听器的类型;此参数应该指定一个从
java.util.EventListener
继承的接口
FooListener
的所有对象组成的数组,如果没有添加这样的侦听器,则返回一个空数组
ClassCastException
- 如果
listenerType
没有指定实现
java.util.EventListener
的类或接口
getTableModelListeners()