模块 java.desktop

接口 UndoableEdit

所有已知的实现类:
AbstractDocument.DefaultDocumentEvent , AbstractDocument.ElementEdit , AbstractUndoableEdit , CompoundEdit , DefaultStyledDocument.AttributeUndoableEdit , StateEdit , UndoManager

public interface UndoableEdit
UndoableEdit 表示编辑。可以撤消编辑,或者如果已经撤消,则可以重做编辑。

UndoableEdit 旨在与 UndoManager 一起使用。由于 UndoableEdit 是由 UndoableEditListener 生成的,它们通常被添加到 UndoManager 中。当 UndoableEdit 添加到 UndoManager 时,会发生以下情况(假设 end 尚未在 UndoManager 上调用):

  1. 如果 UndoManager 包含编辑,它将在当前编辑上调用 addEdit,将新编辑作为参数传递。如果 addEdit 返回 true,则假定新编辑已合并到当前编辑中,并且新编辑将不会添加到当前编辑列表中。编辑可以使用 addEdit 作为将较小的编辑合并到较大的编辑中并被视为单个编辑的方式。
  2. 如果 addEdit 返回 false,则在新编辑上调用 replaceEdit,并将当前编辑作为参数传入。这与 addEdit 相反——如果新编辑从 replaceEdit 返回真,则新编辑将替换当前编辑。
UndoManager 使用 isSignificant 来确定应撤消或重做多少编辑。 UndoManager 将撤消或重做当前编辑与上一个或下一个重要编辑之间的所有无关紧要的编辑(isSignificant 返回 false)。 addEditreplaceEdit 可用于将多个编辑视为单个编辑,从 isSignificant 返回 false 允许处理可用于一次撤消或重做许多较小的编辑。类似的功能也可以使用 addEdit 方法来完成。
  • 方法总结

    修饰符和类型
    方法
    描述
    boolean
    添加一个 UndoableEdit 到这个 UndoableEdit
    boolean
    如果可以重做此编辑,则返回 true。
    boolean
    如果可以撤消此编辑,则返回 true。
    void
    die()
    通知编辑不应再使用它。
    返回此编辑的本地化的、人类可读的描述,例如适用于更改日志。
    返回此编辑的可重做形式的本地化、人类可读的描述,例如适合用作重做菜单项。
    返回此编辑的可撤消形式的本地化的、人类可读的描述,例如适合用作“撤消”菜单项。
    boolean
    如果此编辑被认为是重要的,则返回 true。
    void
    redo()
    重新应用编辑。
    boolean
    如果这个 UndoableEdit 应该替换 anEdit 则返回真。
    void
    undo()
    撤消编辑。
  • 方法详情

    • undo

      void undo() throws CannotUndoException
      撤消编辑。
      抛出:
      CannotUndoException - 如果此编辑无法撤消
    • canUndo

      boolean canUndo()
      如果可以撤消此编辑,则返回 true。
      返回:
      如果可以撤消此编辑,则为真
    • redo

      void redo() throws CannotRedoException
      重新应用编辑。
      抛出:
      CannotRedoException - 如果此编辑无法重做
    • canRedo

      boolean canRedo()
      如果可以重做此编辑,则返回 true。
      返回:
      如果可以重做此编辑,则为真
    • die

      void die()
      通知编辑不应再使用它。一旦 UndoableEdit 被标记为死亡,就无法再撤消或重做。

      这是一个有用的挂钩,用于在无法撤消或重做时清理不再需要的状态——例如,删除不再被取消删除的对象使用的文件资源。 UndoManager 在将编辑出列之前调用它。

      请注意,这是一种单向操作。没有“不死”的方法。

      参见:
    • addEdit

      boolean addEdit(UndoableEdit  anEdit)
      添加一个 UndoableEdit 到这个 UndoableEdit 。此方法可用于将较小的编辑合并为较大的复合编辑。例如,文本编辑器通常允许撤消操作应用于单词或句子。文本编辑器可以选择对每个键事件生成编辑,但允许将这些编辑合并到一个更用户友好的单元中,例如一个词。在这种情况下,UndoableEdit 将覆盖 addEdit 以在合并编辑时返回 true。

      返回值 true 表示 anEdit 已合并到此编辑中。返回值 false 表示 anEdit 可能不会合并到此编辑中。

      通常,接收者已经在 UndoManager(或其他 UndoableEditListener)的队列中,并且有机会合并 anEdit 而不是让它依次添加到队列中。

      如果返回 true,从现在开始 anEdit 必须从 canUndocanRedo 返回 false,并且必须在 undoredo 上抛出适当的异常。

      参数:
      anEdit - 要添加的编辑
      返回:
      如果 anEdit 可以合并到此编辑中,则为真
    • replaceEdit

      boolean replaceEdit(UndoableEdit  anEdit)
      如果这个 UndoableEdit 应该替换 anEdit 则返回真。 CompoundEditUndoManager 使用此方法;如果无法将 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
      返回:
      此编辑的可重做形式的描述