欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-29 20:55:10
废话不多说,直接上代码,小伙伴们仔细看下注释吧。 复制代码 代码如下: /*简单的复制 剪切 粘贴 功能  操作:    &...

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

复制代码 代码如下:

/*简单的复制 剪切 粘贴 功能
 操作:  
  复制测试: 输入文本选择文本,点击复制,然后将光标放在右边的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();
 }
}

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