Java 技术篇-利用ClipboardOwner实现实时监听剪切板功能实例演示
核心功能说明:
设置剪切板内容并指定所有者: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实现实时监听剪切板功能实例演示相关推荐
- html 监听input输入框的值,利用原生JS实时监听input框输入值
利用原生JS实时监听input框输入值 原生JS中可以使用oninput,onpropertychange,onchange oninput,onpropertychange,onchange的用法 ...
- Python 技术篇-利用pyqt5库监听剪切板变动,clipboard.dataChanged.connect()剪切板监听
PyQt5 的 clipboard.dataChanged.connect() 方法可以监听剪切板的变动. from PyQt5.QtWidgets import *app = QApplicatio ...
- PyQt5 技术篇-在clipboard.dataChanged.connect()里如何写入剪切板示例演示,pyqt5监听剪切板变动并写入剪切板内容
PyQt5 自带的写入剪切板方法在 clipboard.dataChanged.connect() 里不生效,主要是为了避免死循环. 不过利用其它的写入剪切板方法放在里面就不会有影响了,比如 pype ...
- maxwell监控mysql_利用Maxwell组件实时监听Mysql的binlog日志
一:在linux环境下安装部署好mysql 开启binlog Vim /etc/my.cnf mysql的binlog格式有3种,为了把binlog解析成json数据格式,要设置binlog的格式为 ...
- 监听剪切板内容,解决复制粘贴内容格式错乱
我们在进行编辑东西时经常会参考一些论坛或回答,针对图片和文字都有的html文本直接复制粘贴的话就会出现文字显示重叠,或者字号异常.如果我们要重新排版的话,就需要只截取文字,然后对图片下载后重新编辑.其 ...
- Python 技术篇-利用pyperclip库实现读取写入剪切板,超简单
直接pip install pyperclip就可以安装了. 用法也是非常的简单,就是 copy() 和 paste(),比 pywin32 不知道简单多少,有兴趣的可以看下,或是对比下: Pytho ...
- Python监听剪切板的两种方法
第一种 import win32clipboard import time #速度快 容易出错 class niubi():def lihai(self):while True:#jianting() ...
- Python 技术篇-20行代码实现微信机器人斗图功能实例演示!斗图啦官网API调用方法
话不多说,看效果图: 先说下原理: 微信接收到你说的话,发给机器人来回复,用回复的话传参给斗图网,然后获得斗图网返回的图片,保存后把图片再发给跟你斗图的人. 斗图啦官网API调用文档 斗图啦官网 菜单 ...
- Java实时监听文件夹,实现实时监听微信接收的文件,去掉文件的只读属性
前言 众所周知,小而美软件每次更新都不干人事啊.上次忘了哪个版本更新的,接收到的文件一律是只读文件,虽然只需要右键属性把只读勾选去掉就行,但是每次接收了个文件都要这么做属实是有点麻烦.所以就自己写了个 ...
最新文章
- MYSQL 的 MASTER到MASTER的主主循环同步
- RAID0,RAID1,RAID10,RAID5
- cxLookupComboBox使用方法
- 工作315:uni-修改添加时间的逻辑
- 前端学习(649):编译和解释性语言的区别
- .net框架读书笔记---CLR内存管理\垃圾收集(二)
- 动态服务器以及WSGI
- 大数据学习笔记06:伪分布式Hadoop
- SAP 开发陷阱一箩筐(05)——绘制屏幕时无法给单选按钮分组
- 详解十三款运维监控工具
- matlab a1处语法无效,MATLAB常见错误
- 市面上哪款输入法最好用,对比出结论
- jQuery fadeIn淡入的使用
- 航程门业:木门企业可搭上移动客户端班车 获得客户
- 算法练习, 红白花放置方法数
- 20110822炒股日记--进入筑底阶段
- 分布式数据库CAP原理
- Hadoop认识初体验
- 狸猫 + 黑猫警长正在待命
- 测试工程师前途-(工资待遇、发展方向探讨)
热门文章
- 优秀案例:12个精美的设计工作室 设计公司网站
- 搜星流程(1)-[Qualcomm][BSP-GPS]
- Android MTK平台最完备的开机动画修改教程
- WINCE5.0添加Alphablend组件时遇到的问题
- pythoninput函数作用_学习python之input()函数
- 提审马甲包被拒问题记录
- java B2B2C Springcloud电子商城系统-通过消息队列传输zipkin日志
- 在ASP.NET Core中获取客户端IP地址
- SQL Server 数值四舍五入,小数点后保留2位
- SFB 项目经验-30-SFB与SFB联盟-IM-正常-状态-不正常