-
- 所有已知实现类:
-
AbstractDocument.DefaultDocumentEvent,AbstractDocument.ElementEdit,AbstractUndoableEdit,CompoundEdit,DefaultStyledDocument.AttributeUndoableEdit,StateEdit,UndoManager
public interface UndoableEditUndoableEdit表示编辑。 可以撤消编辑,或者如果已撤消编辑,则可以重做编辑。UndoableEdit旨在与UndoManager一起使用。 由于UndoableEdit由UndoableEditListener生成,因此通常将它们添加到UndoManager。 当UndoableEdit添加到UndoManager,会发生以下情况(假设未在end上调用UndoManager):- 如果
UndoManager包含编辑,则会在当前编辑中调用addEdit作为参数传递新编辑。 如果addEdit返回true,则假定新编辑已合并到当前编辑中,并且新编辑将不会添加到当前编辑列表中。 编辑可以使用addEdit作为将较小编辑合并到较大编辑中并作为单个编辑处理的方式。 - 如果
addEdit返回false,则在新编辑中调用replaceEdit,并将当前编辑作为参数传入。 这是addEdit的反转 - 如果新编辑从replaceEdit返回true,则新编辑将替换当前编辑。
UndoManager使用isSignificant来确定应撤消或重做的编辑数量。UndoManager将撤消或重做当前编辑与上一次或下一次重要编辑之间的所有无意义编辑(isSignificant返回false)。addEdit和replaceEdit可用于将多个编辑视为单个编辑,从isSignificant返回false允许处理可用于一次撤消或重做许多较小的编辑。 使用addEdit方法也可以完成类似的功能。
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 booleanaddEdit(UndoableEdit anEdit)添加UndoableEdit到此UndoableEdit。booleancanRedo()如果可以重做此编辑,则返回true。booleancanUndo()如果可以撤消此编辑,则返回true。voiddie()通知编辑它不应再使用。StringgetPresentationName()返回此编辑的本地化,人类可读的描述,例如,适用于更改日志。StringgetRedoPresentationName()返回此编辑的可重做形式的本地化,人类可读的描述,例如,适合用作重做菜单项。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()
返回此编辑的可重做形式的本地化,人类可读的描述,例如,适合用作重做菜单项。 这通常来自getPresentationName。- 结果
- a description of the redoable form of this edit
-
-