Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 扩展Swing的UndoManager以提供重复和多次撤消/重做_Java_Swing_Undo_Undo Redo - Fatal编程技术网

Java 扩展Swing的UndoManager以提供重复和多次撤消/重做

Java 扩展Swing的UndoManager以提供重复和多次撤消/重做,java,swing,undo,undo-redo,Java,Swing,Undo,Undo Redo,我的任务是在应用程序中添加撤销/重做/重复功能。我目前正在调查是否可以使用Swing的UndoManager 除了通常的撤消和重做按钮外,我还需要提供一次撤消或重做多个编辑的功能,如MS Office下拉UI,并重复所选的编辑 我相信我可以使用UndoManager进行多次撤消和重做。它提供了多次撤消和重做的方法。要构建UI,我可以扩展UndoManager以公开它所包含的编辑 但是,我不确定是否可以使用UndoManager进行重复选择的操作。我的第一个想法是扩展UndoManager并添加r

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

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

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

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

这似乎合理吗?有更好的解决方案吗?我是不是应该自己滚球而不是滚球?提前谢谢

希望这有帮助

撤消管理器支持无限数量的撤消/重做操作。看


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

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