为工作方便写了个小工具,需要监视系统剪贴板,如果文本内容变化,则自动处理并存入剪贴板。

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);

}

}

java监听剪贴板_Java监视系统剪贴板相关推荐

  1. java 监控剪切板_Java监视系统剪贴板

    为工作方便写了个小工具,需要监视系统剪贴板,如果文本内容变化,则自动处理并存入剪贴板. FlavorListener仅在剪贴板中的数据类型变化时才生效. 改用ClipboardOwner接口,将它注册 ...

  2. java 监听配置文件_java读取系统Properties配置文件利用线程实时监控配置文件变化...

    package util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcept ...

  3. java 监听端口_java游戏服务器检查报告(经验分享)

    java在centos系统运行,经过大量用户使用后,我们使用那些监听手段来判断服务器是否达到我们理想要求呢,判断服务器使用可以继续使用呢? 我们以进程PID9496(监听端口:9624)为对象说明,启 ...

  4. java 监听 循环_java循环按键循环监听事件

    展开全部 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Array ...

  5. java监听剪贴板_Eclipse RCP应用中监视剪贴板变化的小技巧

    最近在做的一个基于Eclipse RCP的下载工具,需要监视系统剪贴板中. 自己在实现的时候主要遇到了两个问题: 1.如果监视线程使用非UI线程,则不能去访问剪贴板 2.如果监视线程使用UI线程,则该 ...

  6. Java监听mysql的binlog详解(mysql-binlog-connector)

    Java监听mysql的binlog详解(mysql-binlog-connector) 1. 需求概述 2. 技术选型 3. 方案设计 3.环境准备 3.1 查看是否开启binlog 3.2 mys ...

  7. java swing列表数据加监听,【Java Swing公开课|Java监听列表项选择事件怎么用,看完这篇文章你一定就会了】- 环球网校...

    [摘要]作为一门面向对象编程语言,Java吸收了C++语言的优点,也展现了其强大的一面,我们能在各个地方看到其功能强大和简单易用的两个特征,当然,也吸引了很多程序员的注意力,所以就有人想了解Java的 ...

  8. java 监听控制台输入

    分享一下我写的java监听控制台输入并可以给出响应的功能. 很多时候需要监听控制台的输入内容,相当于信号监听,根据输入的内容做出相应的动作,这里给出我的一个简单实现. 要注意的是:监听得到的消息中前后 ...

  9. java 监听本地端口_JAVA本地监听与远程端口扫描

    摘 要 随着Internet的不断发展,信息技术已成为社会进步的巨大推动力.不管是存储于服务器里还是流通于Internet上的信息都已成为一个关系事业成败的关键,这就使保证信息的安全变得格外重要.本地 ...

  10. 【免费毕设】JAVA监听系统的设计与开发(源代码+论文)

    文章目录 目录 一.系统设计 二.系统实现 源文件 目录 一.系统设计 4.1 设计框架图 经过对Winpcap和Jpcap的了解,知道了如何截获数据包并进行处理,现在就要编写代码,将这些步骤嵌入到一 ...

最新文章

  1. Ubuntu 安装flash
  2. “卖我一枝笔”:如何史蒂夫·乔布斯将这一经典问题作出回应?
  3. 应用 Valgrind 发现 Linux 程序的内存问题 [转]
  4. Windows Pe 第三章 PE头文件(上)
  5. WINCE6.0在控制面板添加控制面板应用程序
  6. ajax原理 博客,AJAX工作基本原理
  7. caffe随记(八)---使用caffe训练FCN的pascalcontext-fcn32s模型(pascal-context数据集)
  8. python创建sqlite3数据库_Python之Sqlite3数据库基本操作
  9. Fiddler抓取https设置及其原理
  10. as400和java的区别_文件传输协议和AS400
  11. java反射是运行时,Java反射(三)在运行时利用反射分析对象
  12. 蓝桥杯 ADV-79 算法提高 时间转换
  13. 【修复版】ONE兔3.0版本社交社区交友婚恋视频即时通讯双端APP原生源码
  14. python画五子棋棋盘_python 五子棋-文字版(上)
  15. FileUriExposedException异常:file://与content://
  16. [转]内向的人如何建立人际网络
  17. 记一次查询性能优化,原30s+,现0.5s~20s
  18. rsyslog-trouble: imjournal: 26794 messages lost due to rate-limiting
  19. 地形系统shader学习
  20. 算法竞赛入门习题2-3倒三角

热门文章

  1. JQuery插件Select2详解
  2. 计算机组成原理-计算机可靠性模型(串联并联系统/串并联混合系统)
  3. AFNetWorking下载视频文件
  4. 53.String的intern()方法、new String()到底创建了几个对象、intern()面试难题
  5. 如何卸载office201032位_企业如何利用Ansys Mechanical缩减设计时间、验证设计迭代?...
  6. ElementUI Button按钮样式
  7. 2012年8月11日
  8. 如何解决U盘装系统后磁盘总容量变小
  9. Python项目实战:使用selenium爬取拉勾网数据
  10. 课设-基于51单片机的智能小车(循迹+避障+APP控制)