如何编写不可撤销的编辑侦听器
当组件上发生可以撤消的操作时,就会发生不可编辑的事件。当前,只有文本组件会触发不可撤消的编辑事件,然后才间接触发。文本组件的文档触发事件。对于文本组件,不可撤消的操作包括插入字符,删除字符和修改文本样式。程序通常侦听可撤消的编辑事件,以帮助执行撤消和重做命令。
这是来自名为TextComponentDemo
的应用程序中的不可撤消的编辑事件处理代码。
...
//where initialization occurs
document.addUndoableEditListener(new MyUndoableEditListener());
...
protected class MyUndoableEditListener implements UndoableEditListener {
public void undoableEditHappened(UndoableEditEvent e) {
//Remember the edit and update the menus
undo.addEdit(e.getEdit());
undoAction.updateUndoState();
redoAction.updateRedoState();
}
}
您可以在使用 Swing 组件的示例索引中找到TextComponentDemo
的源文件链接。有关程序的不可撤销的编辑侦听器方面的讨论,请参见实现撤消和重做
不可撤销的编辑监听器 API
UndoableEditListener interface
因为UndoableEditListener
只有一种方法,所以没有相应的适配器类.
Method | Purpose |
---|---|
undoableEditHappened(UndoableEditEvent) | 当侦听组件上发生可撤消事件时调用。 |
Method | Purpose |
---|---|
Object getSource() | |
(*在 java.util.EventObject *中) | 返回引发事件的对象。 |
UndoableEdit getEdit() | 返回一个UndoableEdit对象,该对象代表已发生的编辑,并且包含有关撤消或重做该编辑的信息和命令。 |
使用不可撤销的编辑侦听器的示例
下表列出了使用可撤消的编辑侦听器的示例。
Example | Where Described | Notes |
---|---|---|
TextComponentDemo | 实现撤消和重做 | 在可撤消的编辑侦听器的帮助下,在文本窗格上实现撤消和重做。 |