-
- 所有已知实现类:
-
AbstractDocument.DefaultDocumentEvent,AbstractDocument.ElementEdit,AbstractUndoableEdit,CompoundEdit,DefaultStyledDocument.AttributeUndoableEdit,StateEdit,UndoManager
public interface UndoableEdit一个UndoableEdit代表一个编辑。 编辑可能会被撤消,或者如果已经撤消,编辑可能会被重做。UndoableEdit旨在与UndoManager一起使用。 由于UndoableEdit由UndoableEditListener生成,它们通常被添加到UndoManager。 当UndoableEdit添加到UndoManager,会发生以下情况(假设end尚未在UndoManager上UndoManager):- 如果
UndoManager包含编辑,则会在当前编辑中调用addEdit传递新的编辑作为参数。 如果addEdit返回true,则假设新的编辑已被合并到当前编辑中,并且新的编辑将不会添加到当前编辑列表中。 编辑可以使用addEdit作为更小的编辑被并入更大的编辑并被视为单个编辑的方式。 - 如果
addEdit返回错误replaceEdit被调用的新编辑与当前编辑传入作为参数。 这是addEdit的逆向 - 如果新编辑从replaceEdit返回true,则新编辑将替换当前编辑。
UndoManager使用isSignificant来确定应该撤消或重做多少个编辑。UndoManager将撤消或重做当前编辑和上一个或下一个重要编辑之间的所有无关紧要的编辑(isSignificant返回false)。addEdit和replaceEdit可以用于将多个编辑作为单个编辑进行处理,从isSignificant返回false可以使用,可以一次使用多个较小的编辑撤消或重做。 也可以使用addEdit方法来完成类似的功能。
-
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 booleanaddEdit(UndoableEdit anEdit)添加一个UndoableEdit这个UndoableEdit。booleancanRedo()如果可以重做此修改,则返回true。booleancanUndo()如果该编辑可能被撤销,则返回true。voiddie()通知编辑它不应再被使用。StringgetPresentationName()例如,返回适用于更改日志的本编辑的本地化,可读取的描述。StringgetRedoPresentationName()返回适用于例如Redo菜单项的本编辑的可重写形式的本地化,可读的描述。StringgetUndoPresentationName()返回适用于例如撤消菜单项的此编辑的可撤销形式的本地化,可读的描述。booleanisSignificant()如果此编辑被认为是重要的,则返回true。voidredo()重新应用编辑。booleanreplaceEdit(UndoableEdit anEdit)如果这个UndoableEdit应该替换anEdit则返回true。voidundo()撤消编辑。
-
-
-
方法详细信息
-
undo
void undo() throws CannotUndoException
撤消编辑。- 异常
-
CannotUndoException- 如果此编辑无法撤消
-
canUndo
boolean canUndo()
如果该编辑可能被撤销,则返回true。- 结果
- 如果此编辑可能被撤销,则为true
-
redo
void redo() throws CannotRedoException
重新应用编辑。- 异常
-
CannotRedoException- 如果此编辑无法重做
-
canRedo
boolean canRedo()
如果可以重做此修改,则返回true。- 结果
- 如果此修改可能会重做,则为true
-
die
void die()
通知编辑它不应再被使用。 一旦UndoableEdit被标记为死亡,它将无法再被撤消或重做。这是一个有用的钩子,用于清除状态,一旦撤消或重做是不可能的,就不再需要 - 例如,删除不再被删除的对象使用的文件资源。
UndoManager调用编辑之前调用它。请注意,这是单向操作。 没有“不死”的方法。
- 另请参见:
-
CompoundEdit.die()
-
addEdit
boolean addEdit(UndoableEdit anEdit)
添加一个UndoableEdit这个UndoableEdit。 该方法可用于将较小的编辑合并为较大的复合编辑。 例如,文本编辑器通常允许撤销操作适用于单词或句子。 文本编辑器可以选择在每个键事件上生成编辑,但允许将这些编辑合并到更加用户友好的单元中,例如单词。 在这种情况下,UndoableEdit将覆盖addEdit以便在编辑可能合并时返回true。返回值为true表示
anEdit被并入此编辑。 返回值为false表示anEdit可能不包含在此编辑中。通常,接收器已经在
UndoManager(或其他UndoableEditListener)的队列中,并且正在被赋予一个并入anEdit的机会,而不是依次添加到队列中。如果返回true,从现在起
anEdit必须从canUndo和canRedo返回false,并且必须在undo或redo上抛出适当的异常。- 参数
-
anEdit- 要添加的编辑 - 结果
-
如果可以将
anEdit合并到此编辑中,anEdittrue
-
replaceEdit
boolean replaceEdit(UndoableEdit anEdit)
如果这个UndoableEdit应该取代anEdit则返回true。 该方法由CompoundEdit和UndoManager; 如果anEdit无法添加到当前编辑(addEdit返回false),则调用它。此方法提供了编辑以替换现有编辑的方式。
这个消息与addEdit相反 - anEdit通常已经在
UndoManager(或其他UndoableEditListener)中排队,并且接收者被赋予了一个机会来取代它。如果返回true,从现在开始,anEdit必须从canUndo()和canRedo()返回false,并且必须在undo()或redo()上抛出适当的异常。
- 参数
-
anEdit- 替换当前编辑的编辑 - 结果
-
如果此编辑应该替换为
anEdit
-
isSignificant
boolean isSignificant()
如果此编辑被认为是重要的,则返回true。 重要的编辑通常是应该向用户呈现的编辑,可能在菜单项或工具提示上。UndoManager将撤消或重做,对下一个重要编辑进行的所有无关紧要的编辑。- 结果
- 如果此编辑很重要,则为true
-
getPresentationName
String getPresentationName()
例如,返回适用于更改日志的本编辑的本地化,可读取的描述。- 结果
- 此编辑的描述
-
getUndoPresentationName
String getUndoPresentationName()
返回适用于例如撤消菜单项的此编辑的可撤销形式的本地化,可读的描述。 这通常来自于getPresentationName。- 结果
- 该编辑的可撤销形式的描述
-
getRedoPresentationName
String getRedoPresentationName()
返回适用于例如Redo菜单项的本编辑的可重写形式的本地化,可读的描述。 这通常来自于getPresentationName。- 结果
- a description of the redoable form of this edit
-
-