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