第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > Java 技术篇-利用ClipboardOwner实现实时监听剪切板功能实例演示

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

时间:2019-11-15 05:48:36

相关推荐

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{/*作者:小蓝枣日期:.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);}}

效果演示:

喜欢的点个赞❤吧!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。