Java监视系统剪贴板
来源:互联网 发布:淘宝客如何设置优惠券 编辑:程序博客网 时间:2024/04/30 10:46
为工作方便写了个小工具,需要监视系统剪贴板,如果文本内容变化,则自动处理并存入剪贴板。
FlavorListener仅在剪贴板中的数据类型变化时才生效。
改用ClipboardOwner接口,将它注册到剪贴板,当剪贴板中的内容变化时,当前对象失去了所有权,会自动调用接口中的lostOwnership(Clipboard clipboard, Transferable contents)方法,从而达到监控剪贴板的目的。
import java.awt.Toolkit;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.ClipboardOwner;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.StringSelection;import java.awt.datatransfer.Transferable;import java.awt.datatransfer.UnsupportedFlavorException;import java.io.IOException;/** * 剪贴板监控器 * 负责对剪贴板文本的监控和操作 * 由于监控需要一个对象作为ClipboardOwner,故不能用静态类 * */public class SystemClipboardMonitor implements ClipboardOwner{ private Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); public SystemClipboardMonitor(){ //如果剪贴板中有文本,则将它的ClipboardOwner设为自己 if (clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor)){ clipboard.setContents(clipboard.getContents(null), this); } } /************ * 测试代码 * * ********** */ public static void main(String[] args) { SystemClipboardMonitor temp = new SystemClipboardMonitor(); new JFrame().setVisible(true); // 软件窗口 } /********************************************** * 如果剪贴板的内容改变,则系统自动调用此方法 * ********************************************** */ @Override public void lostOwnership(Clipboard clipboard, Transferable contents) { // 如果不暂停一下,经常会抛出IllegalStateException // 猜测是操作系统正在使用系统剪切板,故暂时无法访问 try { Thread.sleep(1); } 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(); } } String clearedText = Text.handle(text); // 自定义的处理方法 // 存入剪贴板,并注册自己为所有者 // 用以监控下一次剪贴板内容变化 StringSelection tmp = new StringSelection(clearedText); clipboard.setContents(tmp, this); }}
0 0
- Java监视系统剪贴板
- 如何监视系统剪贴板变化?
- 用java实现windows剪贴板监视
- 在java中实现windows剪贴板监视
- Java访问系统剪贴板
- 监视剪贴板内容
- 监视剪贴板内容
- 剪贴板监视保存器
- 示例:WPF监视剪贴板
- Java如何使用系统剪贴板
- 关于C#监视剪贴板信息
- java中系统剪贴板的使用
- Java之系统剪贴板WindowUtils包-yellowcong
- java AWT 使用系统剪贴板传递图像
- java监视系统内存状态小程序
- VC 监视剪贴板的变化和内容监视
- 实现网络蚂蚁的实时监视剪贴板功能
- 用 C# 监视剪贴板的活动状态
- 【UGUI】Interaction Components
- mac下sips的用法
- android Sensor一些手机感应效果
- Win7 Jekyll安装(使用64位)
- ubuntu 安装svn及svn使用指南
- Java监视系统剪贴板
- 思科CCNA第二学期第三章答案
- android sdk manager 代理设置
- sys/queue.h分析
- linux线程编程
- android EditText文本框错误提示语句
- ORACLE RBA(Redo Byte Address)说明
- Foundation框架(7)——NSArray的派生、将数组中得元素拼接成字符串、将数组写入文件、从文件中读取数组内容
- javaFX8初探(动画和视觉效果)