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

 更新时间:2023年05月02日 16:43:44   投稿:hebedich  
本文给大家分享了一段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();
 }
}

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

相关文章

  • springboot使用shiro-整合redis作为缓存的操作

    springboot使用shiro-整合redis作为缓存的操作

    这篇文章主要介绍了springboot使用shiro-整合redis作为缓存的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • springboot从application.properties中注入list, map方式

    springboot从application.properties中注入list, map方式

    这篇文章主要介绍了springboot从application.properties中注入list,map方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java中的自旋锁与阻塞锁详解

    Java中的自旋锁与阻塞锁详解

    这篇文章主要介绍了Java中的自旋锁与阻塞锁详解,阻塞锁是指当线程尝试获取锁失败时,线程进入阻塞状态,直到接收信号后被唤醒,阻塞或者唤醒一个Java线程需要操作系统切换CPU 状态来完成,这种状态转换 需要耗费处理器时间,需要的朋友可以参考下
    2023-10-10
  • 如何区分JAVA中的equals与==

    如何区分JAVA中的equals与==

    这篇文章主要介绍了如何区分JAVA中的equals与==,文章简单易懂,实例代码帮助大家更好的参考学习,感兴趣的朋友可以了解下
    2020-06-06
  • 解决mybatis-generator生成Mapper文件没有Selective结尾的问题

    解决mybatis-generator生成Mapper文件没有Selective结尾的问题

    这篇文章主要介绍了解决mybatis-generator生成Mapper文件没有Selective结尾的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • SpringBoot根据注解动态执行类中的方法实现

    SpringBoot根据注解动态执行类中的方法实现

    本文主要介绍了SpringBoot根据注解动态执行类中的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • java中Websocket的使用方法例子

    java中Websocket的使用方法例子

    这篇文章主要给大家介绍了关于java中Websocket的使用方法,WebSocket是HTML5开始提供的一种在浏览器和服务器间进行全双工通信的协议,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Java如何基于DOM解析xml文件

    Java如何基于DOM解析xml文件

    这篇文章主要介绍了Java如何基于DOM解析xml文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 详解springboot通过Async注解实现异步任务及回调的方法

    详解springboot通过Async注解实现异步任务及回调的方法

    这篇文章主要介绍了springboot通过Async注解实现异步任务及回调,文中通过一个简单示例来直观的理解什么是同步调用,在单元测试用例中,注入 SyncTask 对象,并在测试用例中执行 doTaskOne(),doTaskTwo(),doTaskThree() 三个方法,具体实现方式跟随小编一起看看吧
    2022-05-05
  • @KafkaListener 如何使用

    @KafkaListener 如何使用

    这篇文章主要介绍了@KafkaListener 如何使用,本文通过图文实例代码相结合给大家详细讲解,文末给大家介绍了kafka的消费者分区分配策略,需要的朋友可以参考下
    2023-02-02

最新评论