温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-11-20 17:00:35 来源:亿速云 阅读:221 作者:小新 栏目:编程语言

小编给大家分享一下怎么用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());
  }

}

看完了这篇文章,相信你对“怎么用JAVA实现Undo、Redo,Copy、Paste、Cut”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI