核心功能说明:
设置剪切板内容并指定所有者:clipboard.setContents();
当所有者为程序本身时才能监听到剪切板的变动,每次系统执行复制或剪切动作时会自动的更改剪切板的所有者,所以每次监听完成都要重新指定所有者才能保证不断的进行监听。

获取剪切板的内容:clipboard.getContents(null)
指定剪切板所有者时必须指定剪切板的内容,每次设置时还是指定当前剪切板的内容,达到一个剪切板内容不变的效果。

package com.test.test;import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.ClipboardOwner;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;public class ReadClipboard implements ClipboardOwner{/*作者:小蓝枣日期:2020.11.11作用:监听剪切板返回:剪切板的文本内容*/// 获取系统剪切板private Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();public ReadClipboard(){// 将剪切板的所有者设置为自己// 当所有者为自己时,才能监控下一次剪切板的变动// clipboard.getContents(null) 获取当前剪切板的内容clipboard.setContents(clipboard.getContents(null), this);}public static void main(String[] args) throws InterruptedException {ReadClipboard temp = new ReadClipboard();Thread.currentThread().sleep(1000000);}// 重写 lostOwnership 方法// 当有内容写入剪切板时会调用该方法@Overridepublic void lostOwnership(Clipboard clipboard, Transferable contents) {// 延迟1s执行,如果立即执行会报错,系统还没使用完剪切板,直接操作会报错// IllegalStateException: cannot open system clipboardtry {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}String text = null;if (clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor)){try {// 获取文本数据text = (String)clipboard.getData(DataFlavor.stringFlavor);} catch (UnsupportedFlavorException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}System.out.println(text);// 不影响剪切板内容// 每次剪切板变动,剪切板的所有者会被剥夺,所以要重新设置自己为所有者,才能监听下一次剪切板变动clipboard.setContents(clipboard.getContents(null), this);}
}

效果演示:

喜欢的点个赞❤吧!

Java 技术篇-利用ClipboardOwner实现实时监听剪切板功能实例演示相关推荐

  1. html 监听input输入框的值,利用原生JS实时监听input框输入值

    利用原生JS实时监听input框输入值 原生JS中可以使用oninput,onpropertychange,onchange oninput,onpropertychange,onchange的用法 ...

  2. Python 技术篇-利用pyqt5库监听剪切板变动,clipboard.dataChanged.connect()剪切板监听

    PyQt5 的 clipboard.dataChanged.connect() 方法可以监听剪切板的变动. from PyQt5.QtWidgets import *app = QApplicatio ...

  3. PyQt5 技术篇-在clipboard.dataChanged.connect()里如何写入剪切板示例演示,pyqt5监听剪切板变动并写入剪切板内容

    PyQt5 自带的写入剪切板方法在 clipboard.dataChanged.connect() 里不生效,主要是为了避免死循环. 不过利用其它的写入剪切板方法放在里面就不会有影响了,比如 pype ...

  4. maxwell监控mysql_利用Maxwell组件实时监听Mysql的binlog日志

    一:在linux环境下安装部署好mysql 开启binlog Vim  /etc/my.cnf mysql的binlog格式有3种,为了把binlog解析成json数据格式,要设置binlog的格式为 ...

  5. 监听剪切板内容,解决复制粘贴内容格式错乱

    我们在进行编辑东西时经常会参考一些论坛或回答,针对图片和文字都有的html文本直接复制粘贴的话就会出现文字显示重叠,或者字号异常.如果我们要重新排版的话,就需要只截取文字,然后对图片下载后重新编辑.其 ...

  6. Python 技术篇-利用pyperclip库实现读取写入剪切板,超简单

    直接pip install pyperclip就可以安装了. 用法也是非常的简单,就是 copy() 和 paste(),比 pywin32 不知道简单多少,有兴趣的可以看下,或是对比下: Pytho ...

  7. Python监听剪切板的两种方法

    第一种 import win32clipboard import time #速度快 容易出错 class niubi():def lihai(self):while True:#jianting() ...

  8. Python 技术篇-20行代码实现微信机器人斗图功能实例演示!斗图啦官网API调用方法

    话不多说,看效果图: 先说下原理: 微信接收到你说的话,发给机器人来回复,用回复的话传参给斗图网,然后获得斗图网返回的图片,保存后把图片再发给跟你斗图的人. 斗图啦官网API调用文档 斗图啦官网 菜单 ...

  9. Java实时监听文件夹,实现实时监听微信接收的文件,去掉文件的只读属性

    前言 众所周知,小而美软件每次更新都不干人事啊.上次忘了哪个版本更新的,接收到的文件一律是只读文件,虽然只需要右键属性把只读勾选去掉就行,但是每次接收了个文件都要这么做属实是有点麻烦.所以就自己写了个 ...

最新文章

  1. MYSQL 的 MASTER到MASTER的主主循环同步
  2. RAID0,RAID1,RAID10,RAID5
  3. cxLookupComboBox使用方法
  4. 工作315:uni-修改添加时间的逻辑
  5. 前端学习(649):编译和解释性语言的区别
  6. .net框架读书笔记---CLR内存管理\垃圾收集(二)
  7. 动态服务器以及WSGI
  8. 大数据学习笔记06:伪分布式Hadoop
  9. SAP 开发陷阱一箩筐(05)——绘制屏幕时无法给单选按钮分组
  10. 详解十三款运维监控工具
  11. matlab a1处语法无效,MATLAB常见错误
  12. 市面上哪款输入法最好用,对比出结论
  13. jQuery fadeIn淡入的使用
  14. 航程门业:木门企业可搭上移动客户端班车 获得客户
  15. 算法练习, 红白花放置方法数
  16. 20110822炒股日记--进入筑底阶段
  17. 分布式数据库CAP原理
  18. Hadoop认识初体验
  19. 狸猫 + 黑猫警长正在待命
  20. 测试工程师前途-(工资待遇、发展方向探讨)

热门文章

  1. 优秀案例:12个精美的设计工作室 设计公司网站
  2. 搜星流程(1)-[Qualcomm][BSP-GPS]
  3. Android MTK平台最完备的开机动画修改教程
  4. WINCE5.0添加Alphablend组件时遇到的问题
  5. pythoninput函数作用_学习python之input()函数
  6. 提审马甲包被拒问题记录
  7. java B2B2C Springcloud电子商城系统-通过消息队列传输zipkin日志
  8. 在ASP.NET Core中获取客户端IP地址
  9. SQL Server 数值四舍五入,小数点后保留2位
  10. SFB 项目经验-30-SFB与SFB联盟-IM-正常-状态-不正常