服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

用java实现undo、redo,copy、paste、cut


  package clipborad;
  import javax.swing.jtextarea;
  import java.awt.datatransfer.*;
  import java.awt.*;
  import javax.swing.*;
  import java.io.*;
  import javax.swing.undo.*;
  import javax.swing.text.*;
  import javax.swing.event.*;
  import java.awt.event.*;
  /**
  * title: 用java实现undo、redo,copy、paste、cut
  * description:用java实现undo、redo,copy、paste、cut
  * copyright: copyright (c) 2001
  * company:
  * @author: 彭建雄
  * @version 1.0
  */
  
  public class cliptextarea extends jtextarea implements clipboardowner{
  
   clipboard strboard = this.gettoolkit().getsystemclipboard();
   undomanager undo = new undomanager();
   document doc = getdocument();
  
  
   public cliptextarea() {
   doc.addundoableeditlistener(new undoableeditlistener(){
   public void undoableedithappened(undoableeditevent e) {
   doc_addedit(e);}
   });
  
   addactionmap();
   }
  
   public void addactionmap()
   {
   getactionmap().put("undo", new abstractaction("undo") {
   public void actionperformed(actionevent evt) {
   try {
   if (undo.canundo()) {
   undo.undo();
   }
   } catch (cannotundoexception e) {
   }
   }
   });
   getinputmap().put(keystroke.getkeystroke("control z"), "undo");
  
   getactionmap().put("redo",new abstractaction("redo") {
   public void actionperformed(actionevent evt) {
   try
   {
   if (undo.canredo()) {
   undo.redo();
   }
   } catch (cannotredoexception e) {
   }
   }
   });
   getinputmap().put(keystroke.getkeystroke("control r"), "redo");
  
   getactionmap().put("copy",new abstractaction("copy") {
   public void actionperformed(actionevent evt) {
   copy();
   }
   });
   getinputmap().put(keystroke.getkeystroke("control c"), "copy");
  
   getactionmap().put("cut",new abstractaction("cut") {
   public void actionperformed(actionevent evt) {
   cut();
   }
   });
   getinputmap().put(keystroke.getkeystroke("control x"), "cut");
  
   getactionmap().put("paste",new abstractaction("paste") {
   public void actionperformed(actionevent evt) {
   paste();
   }
   });
   getinputmap().put(keystroke.getkeystroke("control v"), "paste");
  
   }
  
  
   public void copy()
   {
   string scopy = getselectedtext();
   if (scopy != null)
   {
   stringselection sselection = new stringselection(scopy);
   strboard.setcontents(sselection,this);
   }
   }
  
   public void cut()
   {
   string scopy = getselectedtext();
   if (scopy != null)
   {
   stringselection sselection = new stringselection(scopy);
   strboard.setcontents(sselection,this);
   this.replaceselection("");
   }
   }
  
   public void paste()
   {
   transferable stransf = strboard.getcontents(this);
   if (stransf!=null)
   {
   try
   {
   string spaste = (string)stransf.gettransferdata(dataflavor.stringflavor);
   this.replacerange(spaste,getselectionstart(),getselectionend());
   }
   catch(unsupportedflavorexception e)
   {
   }
   catch(ioexception ioe)
   {
   }
   }
   }
  
  
   public void lostownership(clipboard clipboard,transferable contents)
   {
  
   }
  
   void doc_addedit(undoableeditevent e)
   {
   undo.addedit(e.getedit());
   }
  
  }

扫描关注微信公众号