科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道用JAVA实现Undo、Redo,Copy、Paste、Cut

用JAVA实现Undo、Redo,Copy、Paste、Cut

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  package clipborad;   import javax.swing.JTextArea;   import java.awt.datatransfer.*;   import java.awt.*;   import javax.sw

作者:中国IT实验室 来源:中国IT实验室 2007年9月26日

关键字: 编程 java

  • 评论
  • 分享微博
  • 分享邮件

  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());
   }
  
  }
  
  

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件