在Java中我需要一些Undo函数的帮助

时间:2008-11-28 11:53:46

标签: java class function stack undo

我用Java编写了一个文本编辑器,我想向它添加撤销功能

但是没有UndoManager类,我需要使用像Stack或LinkedList这样的数据结构,但Java中的Stack类使用Object参数,例如:push(Object o),Not Push(String s) 我需要一些提示或链接。 感谢

4 个答案:

答案 0 :(得分:7)

假设您使用的是Java 5,Stack是一个通用类。您可以根据它应该保存的对象来实例化它。

然后您可以使用:

Stack<String> stack = new Stack<String>();
String string = "someString";
stack.push(string);

另请注意,在使用Java 1.4或更低版本的情况下,您仍然可以将String对象推入堆栈。只有当你弹出它们时才需要明确地向下转换它们,如下所示:

Stack stack = new Stack();
String string = "someString";
stack.push(string);

String popString = (String) stack.pop(); // pop() returns an Object which needs to be downcasted

答案 1 :(得分:3)

“数据结构”实际上是一种模式,称为Memento。当您需要存储多个状态并且可以选择返回先前状态时,它会很有用。对于状态的有效数据存储取决于您正在执行的文本编辑器类型,如果可以进行某些格式化,那么请查看Flyweight模式。

答案 2 :(得分:1)

嗯...

看起来有点像我的RTFM案例;-)

如果您使用的是Java 1.4.2,那么当您从堆栈中获取对象时,您只需要明确cast这些对象:

Command cmd = (Command) stack.pop(); // same for peek() etc.

如果您使用的是Java 1.5,请使用Generics并且不需要显式转换。

答案 3 :(得分:0)

好的我解决了

我必须推送textArea中的文本而不是键盘上的字符

谢谢你们