【问题标题】:Extending Swing's UndoManager to provide repeat and multiple undo/redo扩展 Swing 的 UndoManager 以提供重复和多次撤消/重做
【发布时间】:2012-09-03 07:30:15
【问题描述】:

我的任务是向应用程序添加撤消/重做/重复功能。我目前正在调查是否可以使用 Swing 的 UndoManager。

除了通常的撤消和重做按钮之外,我还需要提供一次撤消或重做多个编辑的功能(下拉 UI,如 MS Office),并重复选择的编辑。

我相信我可以使用 UndoManager 进行多次撤消和重做。它提供了多次撤消和重做的方法。为了构建 UI,我可以扩展 UndoManager 以公开它所拥有的编辑内容。

我不确定我是否可以使用 UndoManager 来重复选择的操作。我的第一个想法是扩展 UndoManager 并添加一个重复(编辑)方法。此方法将克隆或复制编辑,重做副本,然后将副本放在撤消堆栈的顶部。只有实现了 Clonable 才能重复编辑。

这看起来合理吗?有更好的解决方案吗?我应该自己滚动而不是 UndoManager 吗?提前致谢。

【问题讨论】:

    标签: java swing undo undo-redo


    【解决方案1】:

    【讨论】:

    • 您好,感谢您的链接。这显示了如何对编辑进行分组,而不是如何重复它们。我需要重复的是;一个显示编辑历史(撤消堆栈)的 UI,用户可以选择显示的任何一个编辑来重复。这与重做不同。重复的编辑应该被复制(?)并放置在撤消堆栈的顶部。因为编辑存储状态;例如,只有在撤消后才能重做编辑,我不能简单地在所选编辑上调用重做。我真的需要一份编辑副本。
    • 恐怕没有“自动重复”功能。例如。我从文档中删除所有内容并想“重复”。应该发生什么?或者我在 0 位置插入了 1 个字符。当我重复应该发生什么?插入0还是1?有很多问题没有答案。
    【解决方案2】:

    UndoManager 支持无限数量的撤消/重做操作。见the documentation

    对我来说扩展 UndoManager 以添加对重复的支持似乎是合理的,因为最后一次编辑已经存在。

    【讨论】:

      猜你喜欢
      • 2011-06-14
      • 1970-01-01
      • 2012-03-09
      • 1970-01-01
      • 2013-10-18
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      相关资源
      最近更新 更多