JavaTM 2 Platform
Standard Ed. 5.0

javax.swing.undo
类 UndoManager

java.lang.Object
  继承者 javax.swing.undo.AbstractUndoableEdit
      继承者 javax.swing.undo.CompoundEdit
          继承者 javax.swing.undo.UndoManager
所有已实现的接口:
Serializable, EventListener, UndoableEditListener, UndoableEdit

public class UndoManager
extends CompoundEdit
implements UndoableEditListener

可以充当 UndoableEditListenerCompoundEdit 的具体子类,并合并来自各种源的 UndoableEditEvents,并且一次执行一个撤消或恢复操作。 与 AbstractUndoableEditCompoundEdit不同,此类的公共方法是同步的,并且从多线程进行调用时应是安全的。这应让 UndoManager 成为可撤消 JavaBeans 设置的便捷编组。

警告:此类的已序列化对象与以后的 Swing 版本不兼容。当前的序列化支持适用于短期存储或运行相同 Swing 版本的应用程序之间的 RMI。从 1.4 版本开始,已在 java.beans 包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder


字段摘要
 
从类 javax.swing.undo.CompoundEdit 继承的字段
edits
 
从类 javax.swing.undo.AbstractUndoableEdit 继承的字段
RedoName, UndoName
 
构造方法摘要
UndoManager()
           
 
方法摘要
 boolean addEdit(UndoableEdit anEdit)
          如果是 inProgress,则在 indexOfNextAdd 位置插入 anEdit,并移除 indexOfNextAdd 位置以及其后的所有原有编辑。
 boolean canRedo()
          重写以保持常用语义:如果 redo 操作现在能够成功,则返回 true,否则返回 false
 boolean canUndo()
          重写以保持常用语义:如果 undo 操作现在能够成功,则返回 true,否则返回 false
 boolean canUndoOrRedo()
          如果调用 undoOrRedo 将执行正确的操作,则返回 true。
 void discardAllEdits()
          清空撤消管理器,向进程中的每个编辑发送一个终止消息。
protected  UndoableEdit editToBeRedone()
          如果调用 redo,则返回下一个要恢复的有效编辑。
protected  UndoableEdit editToBeUndone()
          如果调用 undo,则返回下一个要撤消的有效编辑。
 void end()
          将 end() 发送到 UndoManager 可将其变为一个原有的(已结束)纯 CompoundEdit。
 int getLimit()
          返回此 UndoManager 将保持的最大编辑数。
 String getRedoPresentationName()
          如果为 inProgress,则返回有效编辑的 getRedoPresentationName,在调用 redo() 时将对该编辑执行恢复操作。
 String getUndoOrRedoPresentationName()
          返回在 undo 和 redo 之间切换的命令的适当名称。
 String getUndoPresentationName()
          如果为 inProgress,则返回有效编辑的 getUndoPresentationName,在调用 undo() 时将对该编辑执行撤消操作。
 void redo()
          如果此 UndoManagerinProgress,则恢复 indexOfNextAdd 位置或其后的最后有效 UndoableEdit,以及它之前的所有无效编辑。
protected  void redoTo(UndoableEdit edit)
          恢复要编辑的 indexOfNextAdd 的所有更改。
 void setLimit(int l)
          设置此 UndoManager 要保持的编辑的最大数量。
 String toString()
          返回显示和标识此对象属性的字符串。
protected  void trimEdits(int from, int to)
          通知给定范围(包含)内的编辑终止,并将它们从编辑中移除。
protected  void trimForLimit()
          以 indexOfNextAdd 为中心,将已排队编辑的数量减少到限制的大小范围内。
 void undo()
          如果此 UndoManager 为 inProgress,则撤消 indexOfNextAdd 之前的最后有效 UndoableEdit,以及它之后的所有无效编辑。
 void undoableEditHappened(UndoableEditEvent e)
          由此 UndoManager 侦听的 UndoabledEdit 源调用。
 void undoOrRedo()
          正确执行 undo 或 redo 操作。
protected  void undoTo(UndoableEdit edit)
          撤消要编辑的 indexOfNextAdd 的所有更改。
 
从类 javax.swing.undo.CompoundEdit 继承的方法
die, getPresentationName, isInProgress, isSignificant, lastEdit
 
从类 javax.swing.undo.AbstractUndoableEdit 继承的方法
replaceEdit
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

UndoManager

public UndoManager()
方法详细信息

getLimit

public int getLimit()
返回此 UndoManager 将保持的最大编辑数。默认值为 100。

另请参见:
addEdit(javax.swing.undo.UndoableEdit), setLimit(int)

discardAllEdits

public void discardAllEdits()
清空撤消管理器,向进程中的每个编辑发送一个终止消息。


trimForLimit

protected void trimForLimit()
以 indexOfNextAdd 为中心,将已排队编辑的数量减少到限制的大小范围内。


trimEdits

protected void trimEdits(int from,
                         int to)
通知给定范围(包含)内的编辑终止,并将它们从编辑中移除。from > to 不执行任何操作。


setLimit

public void setLimit(int l)
设置此 UndoManager 要保持的编辑的最大数量。如果需要丢弃编辑以缩小限制,则会通知这些编辑终止,顺序与添加它们的顺序相反。

另请参见:
addEdit(javax.swing.undo.UndoableEdit), getLimit()

editToBeUndone

protected UndoableEdit editToBeUndone()
如果调用 undo,则返回下一个要撤消的有效编辑。可以返回 null


editToBeRedone

protected UndoableEdit editToBeRedone()
如果调用 redo,则返回下一个要恢复的有效编辑。可以返回 null


undoTo

protected void undoTo(UndoableEdit edit)
               throws CannotUndoException
撤消要编辑的 indexOfNextAdd 的所有更改。相应地更新 indexOfNextAdd。

抛出:
CannotUndoException

redoTo

protected void redoTo(UndoableEdit edit)
               throws CannotRedoException
恢复要编辑的 indexOfNextAdd 的所有更改。相应地更新 indexOfNextAdd。

抛出:
CannotRedoException

undoOrRedo

public void undoOrRedo()
                throws CannotRedoException,
                       CannotUndoException
正确执行 undo 或 redo 操作。适合绑定到在这两个功能之间切换的操作上。如果限制 == 1,则此发送才有意义。

抛出:
CannotRedoException
CannotUndoException
另请参见:
canUndoOrRedo(), getUndoOrRedoPresentationName()

canUndoOrRedo

public boolean canUndoOrRedo()
如果调用 undoOrRedo 将执行正确的操作,则返回 true。适合决定是否启用在两个功能之间切换的命令,只有在限制 == 1 时使用才有意义。

另请参见:
undoOrRedo()

undo

public void undo()
          throws CannotUndoException
如果此 UndoManager 为 inProgress,则撤消 indexOfNextAdd 之前的最后有效 UndoableEdit,以及它之后的所有无效编辑。相应地更新 indexOfNextAdd。

如果此 UndoManager 不是 inProgress,则忽略 indexOfNextAdd,并调用超类的例程。

指定者:
接口 UndoableEdit 中的 undo
覆盖:
CompoundEdit 中的 undo
抛出:
CannotUndoException - 如果 canUndo 返回 false
另请参见:
CompoundEdit.end()

canUndo

public boolean canUndo()
重写以保持常用语义:如果 undo 操作现在能够成功,则返回 true,否则返回 false

指定者:
接口 UndoableEdit 中的 canUndo
覆盖:
CompoundEdit 中的 canUndo
返回:
如果此编辑为 alive 并且 hasBeenDonetrue,则返回 true
另请参见:
CompoundEdit.isInProgress()

redo

public void redo()
          throws CannotRedoException
如果此 UndoManagerinProgress,则恢复 indexOfNextAdd 位置或其后的最后有效 UndoableEdit,以及它之前的所有无效编辑。相应地更新 indexOfNextAdd

如果此 UndoManager 不是 inProgress,则忽略 indexOfNextAdd,并调用超类的例程。

指定者:
接口 UndoableEdit 中的 redo
覆盖:
CompoundEdit 中的 redo
抛出:
CannotRedoException - 如果 canRedo 返回 false
另请参见:
CompoundEdit.end()

canRedo

public boolean canRedo()
重写以保持常用语义:如果 redo 操作现在能够成功,则返回 true,否则返回 false

指定者:
接口 UndoableEdit 中的 canRedo
覆盖:
CompoundEdit 中的 canRedo
返回:
如果此编辑为 alive 并且 hasBeenDonefalse,则返回 true
另请参见:
CompoundEdit.isInProgress()

addEdit

public boolean addEdit(UndoableEdit anEdit)
如果是 inProgress,则在 indexOfNextAdd 位置插入 anEdit,并移除 indexOfNextAdd 位置以及其后的所有原有编辑。在发送每个被移除的编辑时调用终止方法,顺序与添加编辑的顺序相反。更新 indexOfNextAdd。

如果不是 inProgress,则它充当一个 CompoundEdit

指定者:
接口 UndoableEdit 中的 addEdit
覆盖:
CompoundEdit 中的 addEdit
参数:
anEdit - 要添加的编辑
返回:
如果该编辑为 inProgress,则返回 true;否则返回 false
另请参见:
CompoundEdit.end(), CompoundEdit.addEdit(javax.swing.undo.UndoableEdit)

end

public void end()
将 end() 发送到 UndoManager 可将其变为一个原有的(已结束)纯 CompoundEdit。

调用超类的 end() 方法(使 inProgress 为 false),然后将 die() 发送到 indexOfNextAdd 处及其之外的不可到达的编辑,顺序与添加这些编辑的顺序相反。

覆盖:
CompoundEdit 中的 end
另请参见:
CompoundEdit.end()

getUndoOrRedoPresentationName

public String getUndoOrRedoPresentationName()
返回在 undo 和 redo 之间切换的命令的适当名称。如果 limit == 1 并且我们没有进行操作,则使用这样的命令才有意义。


getUndoPresentationName

public String getUndoPresentationName()
如果为 inProgress,则返回有效编辑的 getUndoPresentationName,在调用 undo() 时将对该编辑执行撤消操作。如果不存在,则返回默认表的 AbstractUndoableEdit.undoText。

如果不是 inProgress,则它充当一个 CompoundEdit

指定者:
接口 UndoableEdit 中的 getUndoPresentationName
覆盖:
CompoundEdit 中的 getUndoPresentationName
返回:
默认表中 AbstractUndoableEdit.undoText 键的值,如果 getPresentationName 不为 "",则后跟一个空格和 getPresentationName,否则,单独返回默认值。
另请参见:
undo(), CompoundEdit.getUndoPresentationName()

getRedoPresentationName

public String getRedoPresentationName()
如果为 inProgress,则返回有效编辑的 getRedoPresentationName,在调用 redo() 时将对该编辑执行恢复操作。如果不存在,则返回默认表的 AbstractUndoableEdit.redoText。

如果不是 inProgress,则充当一个 CompoundEdit

指定者:
接口 UndoableEdit 中的 getRedoPresentationName
覆盖:
CompoundEdit 中的 getRedoPresentationName
返回:
默认表中 AbstractUndoableEdit.redoText 键的值,如果 getPresentationName 不为 "",则后跟一个空格和 getPresentationName,否则,只返回默认值。
另请参见:
redo(), CompoundEdit.getUndoPresentationName()

undoableEditHappened

public void undoableEditHappened(UndoableEditEvent e)
由此 UndoManager 侦听的 UndoabledEdit 源调用。使用 e.getEdit() 调用 addEdit。

指定者:
接口 UndoableEditListener 中的 undoableEditHappened
另请参见:
addEdit(javax.swing.undo.UndoableEdit)

toString

public String toString()
返回显示和标识此对象属性的字符串。

覆盖:
CompoundEdit 中的 toString
返回:
此对象的字符串表示形式

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策