java简单实现复制 粘贴 剪切功能代码分享

废话不多说,直接上代码,小伙伴们仔细看下注释吧。


/*简单的复制 剪切 粘贴 功能

 操作:  

  复制测试: 输入文本选择文本,点击复制,然后将光标放在右边的TextArea,点击粘贴

  剪切测试:输入文本选择文本,然后将光标放在右边的TextArea,点击剪切  

*/

import javax.swing.*;

import java.awt.*;

import java.awt.datatransfer.*;

import java.awt.event.*;

public class Demo implements ActionListener

{

 private JFrame jf;

 private JPanel p1, p2, p3;   //上中下

 private JLabel title;

 private JTextArea edit,showMsg;

 private JButton copy,paste,cut;

 Clipboard clipboard;//获取系统剪贴板。

 

 public Demo()

 {

  this.init();

 }

 //界面初始化

 public void init()

 {

  jf = new JFrame("复制粘贴");

  p1 = new JPanel();   //存放标题

  p2 = new JPanel(); //存放JTextArea showMsg

  p3 = new JPanel();  //存放 button

  title = new JLabel("复制粘贴剪切演示");

  edit = new JTextArea("请输入内容",15,25);

  edit.setLineWrap(true);

  showMsg = new JTextArea(15,25);

  showMsg.setLineWrap(true);

  showMsg.setEnabled(false);

  copy = new JButton("复制");

  paste = new JButton("粘贴");

  cut = new JButton("剪切");

  clipboard = jf.getToolkit().getSystemClipboard();

  

  p1.setLayout(new FlowLayout());

  p1.setSize(599,30);

  p1.add(title);

  

  p2.setLayout(new FlowLayout());

  p2.setBackground(Color.gray);

  p2.add(edit);

  p2.add(showMsg);

  

  p3.setLayout(new FlowLayout());

  p3.add(copy);

  p3.add(paste);

  p3.add(cut);

  

  //添加事件监听机制

  copy.addActionListener(this);

  paste.addActionListener(this);

  cut.addActionListener(this);

  

  // this.copyStr(copy);

  jf.add(p1, BorderLayout.NORTH);

  jf.add(p2, BorderLayout.CENTER);

  jf.add(p3, BorderLayout.SOUTH);

  jf.setLocation(400,200);

  jf.setSize(600,450);

  jf.setResizable(false);

  jf.setVisible(true);

 }

 

 //事件处理

 public void actionPerformed(ActionEvent e)

 {

  if(e.getSource() == copy)

  {

   String tempText = edit.getSelectedText();  //拖动鼠标选取文本

   //创建能传输指定 String 的 Transferable。

   StringSelection editText = 

     new StringSelection(tempText);

   /**

   将剪贴板的当前内容设置到指定的 transferable 对象,

   并将指定的剪贴板所有者作为新内容的所有者注册。

   */

   clipboard.setContents(editText,null);

  }else if(e.getSource() == cut)

  {

   String tempText = edit.getSelectedText();

   StringSelection editText = 

     new StringSelection(tempText);

   clipboard.setContents(editText,null);

   int start= edit.getSelectionStart();

   int end  = edit.getSelectionEnd(); 

   showMsg.replaceRange("",start,end) ; //从Text1中删除被选取的文本。 

  }else if(e.getSource() == paste)

  {

   Transferable contents = clipboard.getContents(this);

     DataFlavor  flavor= DataFlavor.stringFlavor;

      if( contents.isDataFlavorSupported(flavor))

      {

     try

     {  

      String str;

      str = (String)contents.getTransferData(flavor);

      showMsg.append(str);

     }catch(Exception ex)

     {

      ex.printStackTrace();

     }

      }

  }

 }

 

 public static void main(String[] args)

 {

  new Demo();

 }

}

代码很简单,使用也很方便,小伙伴们有更好的思路的话,请一定要告诉我。