-
- 所有已知实现类:
-
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
返回true,则新编辑将替换当前编辑。
UndoManager
使用isSignificant
来确定应撤消或重做的编辑数量。UndoManager
将撤消或重做当前编辑与上一次或下一次重要编辑之间的所有无意义编辑(isSignificant
返回false)。addEdit
和replaceEdit
可用于将多个编辑视为单个编辑,从isSignificant
返回false允许处理可用于一次撤消或重做许多较小的编辑。 使用addEdit
方法也可以完成类似的功能。
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 boolean
addEdit(UndoableEdit anEdit)
添加UndoableEdit
到此UndoableEdit
。boolean
canRedo()
如果可以重做此编辑,则返回true。boolean
canUndo()
如果可以撤消此编辑,则返回true。void
die()
通知编辑它不应再使用。String
getPresentationName()
返回此编辑的本地化,人类可读的描述,例如,适用于更改日志。String
getRedoPresentationName()
返回此编辑的可重做形式的本地化,人类可读的描述,例如,适合用作重做菜单项。String
getUndoPresentationName()
返回此编辑的可撤消形式的本地化,人类可读的描述,例如,适合用作撤消菜单项。boolean
isSignificant()
如果此编辑被认为是重要的,则返回true。void
redo()
重新应用编辑。boolean
replaceEdit(UndoableEdit anEdit)
如果此UndoableEdit
应替换anEdit
则返回true。void
undo()
撤消编辑。
-
-
-
方法详细信息
-
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
可以合并到此编辑中,anEdit
true
-
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
-
-