JAVA 实现Undo/Redo(撤销/恢复)一

本文介绍了如何在Java中实现撤销/恢复(Undo/Redo)功能,特别是针对非JTextComponent组件的情况。文章讨论了Java Swing的Undo包,并指出对于更复杂的Undo/Redo操作,需要自定义实现。通过理解Undoable和Command接口,作者提出了一种简化实现的策略,包括创建一个UndoableCommand抽象类,该类包含了undo和redo的基本逻辑,并提供了子类可以扩展的抽象方法。文章还强调了错误调用undo和redo时应抛出的异常情况。
摘要由CSDN通过智能技术生成
Undo/Redo是软件的一个常用功能,Java 在swing中提供了Undo包, 提供了对JTextComponent组件的Undo/Redo支持。但是除了文本处理以外的Undo/Redo一般要自己实现,而且即使是文本处理的Undo/Redo, 好像也有些不足,例如输入时Undo/Redo是一个一个字符的,如果要做到WORD的一次一串字符撤销/恢复,也要自己实现。最近,研究了一下Undo包, 发现它的类还是比较复杂的。那么,能用简单的方法实现自己的Undo/Redo系统吗?网上的答案一般是用Command模式, 但很难看到简单易懂的实现方式。这里,本文试图通过自己的理解实现一个简单的Undo/Redo系统。

一, Undoable和Command接口

要实现Undo/Redo功能,要实现Undoable和Command接口。

public interface Undoable {

public void undo();

public void redo();

public boolean canUndo();

public boolean canRedo();

}

public interface Command {

public void execute();
}

二, UndoableCommand抽象类

在Undoable和Command接口基础上封装一个抽象类,为了简单起见,没有让它显式implements Undoable和Command接口。

UndoableCommand类的主要功能:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值