你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Java专栏
使用Java来实现编辑器的Undo Redo功能(2)
 
 updateUndoState();
   redoAction.updateRedoState();
  }
  
  void updateUndoState()
  {
   if ( undoManager.canUndo() )
   {
    setEnabled( true );
    putValue( Action.NAME, "Undo" ); // TODO I18N
   }
   else
   {
    setEnabled( false );
    putValue( Action.NAME, "Cannot undo" ); // TODO I18N
   }
  }
 }
 
 /**
  * RedoAction is the Action responsible for handling the redo operation.
  */
 class RedoAction
  extends AbstractAction
 {
  public RedoAction()
  {
   super( "Cannot redo" ); // TODO I18N
   setEnabled( false );
   putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("ctrl Y") );
  }
  public void actionPerformed(ActionEvent e)
  {
   try
   {
    undoManager.redo();
   }
   catch( CannotRedoException cre )
   {
    // TODO: Use logging?
    cre.printStackTrace( System.err );
   }
   updateRedoState();
   undoAction.updateUndoState();
  }
  
  void updateRedoState()
  {
   if ( undoManager.canRedo() )
   {
    setEnabled( true );
    putValue( Action.NAME, "Redo" ); // TODO I18N
   }
   else
   {
    setEnabled( false );
    putValue( Action.NAME, "Cannot redo" ); // TODO I18N
   }
  }
 }
 
 UndoAction getUndoAction()
 {
  return undoAction;
 }
 
 RedoAction getRedoAction()
 {
  return redoAction;
 }
}

使用的时候,只需要将你创建的JEditorPane作为对象传入UndoWrapper中即可。使用方式如下new UndoWrapper(editorPane);

  OK这样你的编辑器就具有了Undo Redo功能,而且是次数不收限制的。

(编辑:aniston)

  推荐精品文章

·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录
·2023年4月目录 
·2023年3月目录 
·2023年2月目录 
·2023年1月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089