`
bmqnc
  • 浏览: 122708 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

今天自己做了redo-undo功能

    博客分类:
  • java
阅读更多
现在的项目中有一个文本编辑器(类似记事本的),是之前的程序员写的,他是自己管理redo-undo栈,我看了一下,根本没法用那个redo-undo功能(只能redo-undo一次,晕死),而且其中的逻辑超级乱。

我改写了一下,代码还算简洁,由于是公司的项目,我不能贴代码,只能讲讲我实现的思路。

具体就是在编辑框输入的同时,将前面的输入压到undo栈,但要注意,当前在文本框的文本应该将其入redo栈。

每次编辑框发生修改时,undo栈压入的是redo栈的top元素,然后当前编辑框中的文本再入redo栈。但要注意的是编辑框刚打开时是有初始化值的(类似记事本打开一个txt文件,txt中本身存在内容),因此一开始的时候这个初始值是要压入到undo栈而不能压入到redo栈。

做undo的时候注意undo栈不能一直pop,因为undo的底元素师文本框的初始值。
而redo的时候redo栈也不能一直pop,因为redo栈的顶元素是最后修改键入的那个元素。

而文本框显示的值是redo或者undo的最新值。当然,这个值如前面所说,是栈里面的元素,可能这个元素是栈中弹出的元素,也可能只是取栈顶的元素(看是否到达了redo-undo栈的size为1)。
分享到:
评论
2 楼 bmqnc 2010-12-24  
cqh520llr 写道
sb,不帖代码,以后人家搜索到了浪费人家时间,而且这个代码贴出来以后自己也方便查找


你Y的,你才sb,这是公司的代码我能随便发吗?

不过可以写伪代码倒是真的。
1 楼 cqh520llr 2010-11-09  
sb,不帖代码,以后人家搜索到了浪费人家时间,而且这个代码贴出来以后自己也方便查找

相关推荐

Global site tag (gtag.js) - Google Analytics