Module  java.desktop
软件包  javax.swing.undo

Interface UndoableEdit

  • 所有已知实现类:
    AbstractDocument.DefaultDocumentEventAbstractDocument.ElementEditAbstractUndoableEditCompoundEditDefaultStyledDocument.AttributeUndoableEditStateEditUndoManager


    public interface UndoableEdit
    一个UndoableEdit代表一个编辑。 编辑可能会被撤消,或者如果已经撤消,编辑可能会被重做。

    UndoableEdit旨在与UndoManager一起使用。 由于UndoableEditUndoableEditListener生成,它们通常被添加到UndoManager UndoableEdit添加到UndoManager ,会发生以下情况(假设end尚未在UndoManagerUndoManager ):

    1. 如果UndoManager包含编辑,则会在当前编辑中调用addEdit传递新的编辑作为参数。 如果addEdit返回true,则假设新的编辑已被合并到当前编辑中,并且新的编辑将不会添加到当前编辑列表中。 编辑可以使用addEdit作为更小的编辑被并入更大的编辑并被视为单个编辑的方式。
    2. 如果addEdit返回错误replaceEdit被调用的新编辑与当前编辑传入作为参数。 这是addEdit的逆向 - 如果新编辑从replaceEdit返回true,则新编辑将替换当前编辑。
    UndoManager使用isSignificant来确定应该撤消或重做多少个编辑。 UndoManager将撤消或重做当前编辑和上一个或下一个重要编辑之间的所有无关紧要的编辑( isSignificant返回false)。 addEditreplaceEdit可以用于将多个编辑作为单个编辑进行处理,从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​()
      撤消编辑。
    • 方法详细信息

      • canUndo

        boolean canUndo​()
        如果该编辑可能被撤销,则返回true。
        结果
        如果此编辑可能被撤销,则为true
      • 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必须从canUndocanRedo返回false,并且必须在undoredo上抛出适当的异常。

        参数
        anEdit - 要添加的编辑
        结果
        如果可以将 anEdit合并到此编辑中, anEdit true
      • replaceEdit

        boolean replaceEdit​(UndoableEdit anEdit)
        如果这个UndoableEdit应该取代anEdit则返回true。 该方法由CompoundEditUndoManager ; 如果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