本教程是针对JDK 8编写的。本页中描述的示例和实践未利用后续版本中引入的改进,并且可能使用不再可用的技术。
有关Java SE 9及后续版本中更新的语言特性的摘要,请参阅Java语言变化。
有关所有JDK版本的新功能、增强功能以及已删除或弃用选项的信息,请参阅JDK发行说明。
当可变的列表的内容发生改变时,会发生列表数据事件。由于是模型而不是组件触发这些事件,所以你需要在列表模型中注册一个列表数据监听器。如果你没有显式地创建一个带有可变列表模型的列表,则你的列表是不可变的,它的模型不会触发这些事件。
下面的示例演示了可变列表上的列表数据事件:
intervalAdded
事件。intervalRemoved
事件。contentsChanged
事件——一个是移动的项目,一个是被替代的项目。你可以在ListDataEventDemo.java
中找到演示代码。以下是在列表模型上注册列表数据监听器并实现该监听器的代码:
//...在这里声明成员变量... private DefaultListModel listModel; ... //创建并填充列表模型 listModel = new DefaultListModel(); ... listModel.addListDataListener(new MyListDataListener()); class MyListDataListener implements ListDataListener { public void contentsChanged(ListDataEvent e) { log.append("contentsChanged: " + e.getIndex0() + ", " + e.getIndex1() + newline); } public void intervalAdded(ListDataEvent e) { log.append("intervalAdded: " + e.getIndex0() + ", " + e.getIndex1() + newline); } public void intervalRemoved(ListDataEvent e) { log.append("intervalRemoved: " + e.getIndex0() + ", " + e.getIndex1() + newline); } }
ListDataListener
没有对应的适配器类。
方法 | 目的 |
---|---|
intervalAdded(ListDataEvent) | 当一个或多个项目添加到列表中时调用。 |
intervalRemoved(ListDataEvent) | 当一个或多个项目从列表中删除时调用。 |
contentsChanged(ListDataEvent) | 当列表中一个或多个项目的内容发生变化时调用。 |
方法 | 目的 |
---|---|
Object getSource() (在 java.util.EventObject 中) |
返回触发事件的对象。 |
int getIndex0() | 返回第一个值发生变化的项目的索引。 |
int getIndex1() | 返回最后一个值发生变化的项目的索引。 |
int getType() | 返回事件类型。可能的值有:CONTENTS_CHANGED 、INTERVAL_ADDED 或INTERVAL_REMOVED 。 |
下表列出了使用列表数据监听器的示例。
示例 | 描述位置 | 备注 |
---|---|---|
ListDataEventDemo |
本节 | 报告列表上发生的所有列表数据事件。 |