模块  java.desktop
软件包  javax.swing.undo

Interface 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返回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()
      撤消编辑。
    • 方法详细信息

      • 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必须从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