快速业务通道

用java实现编辑器的撤消、重做功能 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

用java实现编辑器的撤消、重做功能

时间:2011-03-06

用java实现编辑器的撤消、重做功能,非常的方便,下面是一个实现这个功能的类,

import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JEditorPane; import javax.swing.KeyStroke; import javax.swing.event.UndoableEditEvent; import javax.swing.event.UndoableEditListener; import javax.swing.text.JTextComponent; import javax.swing.undo.CannotRedoException; import javax.swing.undo.CannotUndoException; import javax.swing.undo.UndoManager; /** * UndoWrapper is responsible for adding undo and redo support to text components. * @author Antonio Vieiro (antonio@antonioshome.net), $Author: $ * @version $Revision: $ */ public class UndoWrapper   implements UndoableEditListener {   private UndoManager undoManager;   private UndoAction undoAction;   private RedoAction redoAction;   private JEditorPane textComponent;   /**   * Creates a new instance of UndoWrapper   */   public UndoWrapper( JEditorPane aComponent )   {    textComponent = aComponent;    undoManager = new UndoManager();    undoAction = new UndoAction();    redoAction = new RedoAction();    textComponent.getDocument().addUndoableEditListener( this );    textComponent.getInputMap().put( (KeyStroke) undoAction.getValue( Action.ACCELERATOR_KEY), "undo" );    textComponent.getInputMap().put( (KeyStroke) redoAction.getValue( Action.ACCELERATOR_KEY), "redo" );    textComponent.getActionMap().put( "undo", undoAction );    textComponent.getActionMap().put( "redo", redoAction );   }   public void undoableEditHappened(UndoableEditEvent e)   {    undoManager.addEdit( e.getEdit() );    undoAction.updateUndoState();    redoAction.updateRedoState();   }   /**   * UndoAction is the Action responsible for handling the undo operation.   */   class UndoAction    extends AbstractAction   {    public UndoAction()    {     super( "Cannot undo" ); // TODO: I18N     setEnabled( false );     putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("ctrl Z") );    }    public void actionPerformed(ActionEvent e)    {     try     {      undoManager.undo();     }     catch( CannotUndoException cue )     {      // TODO: Use logging?      cue.printStackTrace( System.err );     }     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( &

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号