504.md 2.5 KB
Newer Older
W
wizardforcel 已提交
1
# 如何编写表模型监听器
W
init  
wizardforcel 已提交
2 3 4 5 6

> 原文: [https://docs.oracle.com/javase/tutorial/uiswing/events/tablemodellistener.html](https://docs.oracle.com/javase/tutorial/uiswing/events/tablemodellistener.html)

在实例化时,每个 [`JTable`](../components/table.html) 对象被传递一个表模型对象,该对象管理它显示的数据。默认情况下,如果未指定自定义`TableModel`对象,`JTable`对象将继承`DefaultTable`对象,但默认情况下,此模型仅管理字符串。要处理对象,执行计算或从数据库或其他程序检索数据,您必须设计自己的自定义`TableModel`对象,该对象实现`TableModel`接口。有关详细信息,请参见[创建表模型](../components/table.html#data)

W
wizardforcel 已提交
7
要检测由表模型对象管理的数据的更改,`JTable`类需要实现`TableModelListener`接口,调用`addTableModelListener()`来捕获事件,然后覆盖`tableChanged()`以响应监听器事件。有关详细信息,请参见[收听数据更改](../components/table.html#modelchange)
W
init  
wizardforcel 已提交
8 9 10 11 12 13 14 15 16 17

_ 因为`TableModelListener`只有一个方法,所以它没有相应的适配器类。_

| 方法 | 目的 |
| :-- | :-- |
| [tableChanged(TableModelEvent)](https://docs.oracle.com/javase/8/docs/api/javax/swing/event/TableModelListener.html#tableChanged-javax.swing.event.TableModelEvent-) | 当表中的结构或数据发生更改时调用。 |

| 方法 | 目的 |
| :-- | :-- |
| [对象 getSource()](https://docs.oracle.com/javase/8/docs/api/java/util/EventObject.html#getSource--)
W
wizardforcel 已提交
18
`java.util.EventObject`中的*)_ | 返回触发事件的对象。 |
W
init  
wizardforcel 已提交
19 20 21 22
| [int getFirstRow()](https://docs.oracle.com/javase/8/docs/api/javax/swing/event/TableModelEvent.html#getFirstRow--) | 返回更改的第一行的索引。 `TableModelEvent.HEADER_ROW`指定表头。 |
| [int getLastRow()](https://docs.oracle.com/javase/8/docs/api/javax/swing/event/TableModelEvent.html#getLastRow--) | 最后一行发生了变化。同样,`HEADER_ROW`是一个可能的值。 |
| [int getColumn()](https://docs.oracle.com/javase/8/docs/api/javax/swing/event/TableModelEvent.html#getColumn--) | 返回已更改的列的索引。常量`TableModelEvent.ALL_COLUMNS`指定所有列可能已更改。 |
| [int getType()](https://docs.oracle.com/javase/8/docs/api/javax/swing/event/TableModelEvent.html#getType--) | 变化的细胞发生了什么。返回值为以下之一:`TableModelEvent.INSERT``TableModelEvent.DELETE``TableModelEvent.UPDATE`。 |