记事本里的撤销是怎么实现的;
先告诉我一步撤销的实现
在说多步实现

解决方案 »

  1.   

    http://topic.csdn.net/t/20050101/16/3693365.htmlJTextField提供了undo/redo的方法,你只要在你写的类中首先定义一个UNDOMANAGER   .UndoManager   mg   =   new   UndoManager();然后继承UndoableEditListener.,在实现的方法中   public   void   undoableEditHappened(UndoableEditEvent   parm1)   {   
              mg.addEdit(parm1.getEdit());//将EDIT注册到UNDOMANAGER中   
          }然后给JTextField添加jTextArea1.getDocument().addUndoableEditListener(this);.增加两个BUTTON,一个实现UNDO,一个实现REDO.UDNO方法:   public   void   undo()   {   
              mg.undo();   
          }   
      REDO方法   
      public   void   redo()   {   
              mg.redo();   
          }   
      试试.很管用.如果不是要实现JTEXTFIELD的UNDOREDO可能就需要自己写UNDO/REDO的方法,但思想都是一样的.   
      

  2.   

    简单的就是当文本改变的时候, 保存成一个类似堆栈的结构比如:时刻t1: aaaa -------> 堆栈的第一项时刻t2: aaaabbb -------> 堆栈的第二项时刻t3: aaaabbbCC在时刻t3的时候,用户想撤销了, 这个时候,弹出栈顶, 即t2时刻的数值, 用此时刻的文本代替当前的, 再撤销, 则用t1代替当前文本,考虑到存储效率, 保存变化的部分是最佳的。 而且, 不能让用户无限制的撤销, 比如堆栈大小限制为10, 就让用户只能有十次机会。
      

  3.   

    http://www.diybl.com/course/3_program/java/javajs/200896/139294.htmlimport javax.swing.undo.UndoManager;