java简单实现复制 粘贴 剪切功能代码分享
作者:hebedich 发布时间:2023-10-14 05:08:23
标签: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();
}
}
代码很简单,使用也很方便,小伙伴们有更好的思路的话,请一定要告诉我。
0
投稿
猜你喜欢
- springboot读取文件,打成jar包后访问不到最新开发出现一种情况,springboot打成jar包后读取不到文件,原因是打包之后,文
- 题目:给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路
- 一、 Sharding-jdbc简介“Sharding-jdbc是开源的数据库操作中间件;定位为轻量级Java框架,在Java的JDBC层提
- 最近项目中需要实现定时执行任务,比如定时计算会员的积分、调用第三方接口等,由于项目采用spring框架,所以这里结合spring框架来介绍。
- 因为涉及到 io 流输入问题,如果不关闭会一直占用资源。所以使用过后要及时关闭,防止资源一直被占用。Scanner在使用前要导入 java.
- 1、找准入口,使用ClassPathXmlApplicationContext的构造方法加载配置文件,用于加载classPath下的配置文件
- 在android开发中,经常会遇到一个view需要它能够支持滑动的需求。下面通过本篇文章给大家介绍android view移动的六种方法。l
- 本文实例为大家分享了Android绝对布局AbsoluteLayout的具体代码,供大家参考,具体内容如下1>AbsoluteLayo
- OverView今天在复习的时候,突然复习到我们的相机操作,但是对于相机操作,对于我来说比较复杂的是对于权限的操作。所有我们需要对我们的相机
- 上篇介绍了几种图表的公共组件X、Y轴、背景Board的绘制。这章节介绍柱状图表的绘制,相对其它图表而言简单一些,这里主要介绍图表主体的绘制,
- 条件:1、android:ellipsize=”marquee”2、TextView必须单行显示,即内容必须超出TextView
- 这里使用的是dynamic-datasource-spring-boot-starter ,它是一个基于springboot的快速集成多数据
- Java NIO(New IO)是Java 1.4版本中引入的一套全新的IO处理机制,与之前的传统IO相比,NIO具有更高的可扩展性和灵活性
- 前言前面一篇我们介绍了使用 shared_preferences实现简单的键值对存储,然而我们还会面临更为复杂的本地存储。比如资讯类 App
- 一、广播机制概述通常情况下在学校的每个教室都会装有一个喇叭,这些喇叭是接入到学校广播室的。如果有重要通知,会发送一条广播来告知全校师生。为了
- 无论是用Eclipse还是用Android Studio做android开发,都会接触到jar包,全称应该是:Java Archive,即j
- 走马灯是一种常见的效果,本文讲一下如何用 PageView 在 Flutter 里实现一个走马灯, 效果如下,当前页面的高度比其它页面高,切
- Java 方法执行时的动态分派和静态分派是 Java 实现多态的本质背景Java 的动态分派和静态分派也是 Java 方法的执行原理。 Ja
- spring的自动装配功能的定义:无须在Spring配置文件中描述javaBean之间的依赖关系(如配置<property>、&
- 1 StringString:字符串常量,字符串长度不可变。2 StringBufferStringBuffer:字符串变量(Synchro