-
- 所有已知实现类:
-
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 方法 描述 boolean
addEdit(UndoableEdit anEdit)
添加一个UndoableEdit
这个UndoableEdit
。boolean
canRedo()
如果可以重做此修改,则返回true。boolean
canUndo()
如果该编辑可能被撤销,则返回true。void
die()
通知编辑它不应再被使用。String
getPresentationName()
例如,返回适用于更改日志的本编辑的本地化,可读取的描述。String
getRedoPresentationName()
返回适用于例如Redo菜单项的本编辑的可重写形式的本地化,可读的描述。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()
返回适用于例如Redo菜单项的本编辑的可重写形式的本地化,可读的描述。 这通常来自于getPresentationName
。- 结果
- a description of the redoable form of this edit
-
-