如何编写不可撤销的编辑侦听器

当组件上发生可以撤消的操作时,就会发生不可编辑的事件。当前,只有文本组件会触发不可撤消的编辑事件,然后才间接触发。文本组件的文档触发事件。对于文本组件,不可撤消的操作包括插入字符,删除字符和修改文本样式。程序通常侦听可撤消的编辑事件,以帮助执行撤消和重做命令。

这是来自名为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只有一种方法,所以没有相应的适配器类.

MethodPurpose
undoableEditHappened(UndoableEditEvent)当侦听组件上发生可撤消事件时调用。

UndoableEditEvent 类

MethodPurpose
Object getSource()

(*在java.util.EventObject *中)
返回引发事件的对象。
UndoableEdit getEdit()返回一个UndoableEdit对象,该对象代表已发生的编辑,并且包含有关撤消或重做该编辑的信息和命令。

使用不可撤销的编辑侦听器的示例

下表列出了使用可撤消的编辑侦听器的示例。

ExampleWhere DescribedNotes
TextComponentDemo实现撤消和重做在可撤消的编辑侦听器的帮助下,在文本窗格上实现撤消和重做。