java 监测粘贴板事件_Java 监视系统剪贴板
当系统剪贴板中的文本变化时,处理文本并将结果保存到剪贴板。
1.[代码][Java]代码
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;
import javax.swing.JFrame;
/**
* 剪贴板监控器
* 负责对剪贴板的监控和操作
* 由于监控需要一个对象作为ClipboardOwner,故不能用静态类
* 不用FlavorListener是因为它仅监控剪贴板中数据类型的变化
*/
public class SystemClipboardMonitor implements ClipboardOwner{
private Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
private boolean going; //控制开关
/*****************
* 开始监视剪贴板 *
* ***************/
public void begin(){
going = true;
//将剪贴板中内容的ClipboardOwner设置为自己
//这样当其中内容变化时,就会触发lostOwnership事件
clipboard.setContents(clipboard.getContents(null), this);
}
/*****************
* 停止监视剪贴板 *
* ***************/
public void stop(){
going = false;
}
/************
* 测试代码 *
* **********/
public static void main(String[] args) {
SystemClipboardMonitor tmp = new SystemClipboardMonitor();
tmp.begin(); //开始监视
new JFrame().setVisible(true);// 软件窗口
}
/*******************************************
* 如果剪贴板的内容改变,则系统自动调用此方法 *
*******************************************/
@Override
public void lostOwnership(Clipboard clipboard, Transferable contents) {
if (going){ //如果是进行中状态,则操作
// 如果不暂停一下,经常会抛出IllegalStateException
// 猜测是操作系统正在使用系统剪切板,故暂时无法访问
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 取出文本并进行一次文本处理
// 如果剪贴板中有文本:
if (clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor)){
try {
String text = (String)clipboard.getData(DataFlavor.stringFlavor);
String clearedText = Texts.handle(text);
// 存入剪贴板,并注册自己为所有者
// 这样下次剪贴板内容改变时,仍然可以触发此事件
StringSelection tmp = new StringSelection(clearedText);
clipboard.setContents(tmp, this);
} catch (UnsupportedFlavorException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} else {
// 如果剪贴板中没有文本,仍然将自己设置为它的ClipboardOwner
clipboard.setContents(clipboard.getContents(null), this);
}
}
}
}
java 监测粘贴板事件_Java 监视系统剪贴板相关推荐
- java 监控剪切板_Java监视系统剪贴板
为工作方便写了个小工具,需要监视系统剪贴板,如果文本内容变化,则自动处理并存入剪贴板. FlavorListener仅在剪贴板中的数据类型变化时才生效. 改用ClipboardOwner接口,将它注册 ...
- java 文本框输入事件_Java文本框上的ActionEvent事件 | 学步园
三个概念:事件源, 监视器, 处理事件的接口 事件源 能够产生事件的对象都可以成为事件源,如文本框.按钮.下拉式列表等. 事件源必须是一个对象,而且这个对象必须是 Java认为能够发生事件的对象. 监 ...
- java文本框选中事件_Java文本框上的ActionEvent事件
三个概念:事件源, 监视器, 处理事件的接口 事件源 能够产生事件的对象都可以成为事件源,如文本框.按钮.下拉式列表等. 事件源必须是一个对象,而且这个对象必须是 Java认为能够发生事件的对象. 监 ...
- 使用计算机粘贴板的步骤,如何打开剪贴板,详细教您电脑如何打开剪贴板
使用Windows系统,经常用到就是 "复制"."剪切"."粘贴" 的操作步骤.有时不小心将剪切板中的内容粘贴到某个不知名的地方,导致存储空 ...
- java 钩子 64位 操作系统_Java与系统钩子
在不少java桌面应用中,经常需要实现热键功能,于是只能利用系统键盘钩子实现. public class KeyboardHook { static { try { // System.out.pri ...
- java鼠标点击事件_Java 鼠标点击事件实例
首先我们应该知道鼠标点击事件怎么实现 其部分代码如下 if (anyEvent.getButton() == MouseEvent.BUTTON1) {} e.getButton()返回值分别为NOB ...
- java图片点击事件_java中想要点击一个button然后jlabel上就显示出图片,button事件监听该怎么写。...
展开全部 给个例子你参考一下:给按钮62616964757a686964616fe4b893e5b19e31333332643864bntOk添加监听事件 bntOk.addMouseListener ...
- Java编写滴滴租车_Java滴滴打车系统实现(同时实现租车购物车)
实现过程如下: 构造抽象Auto类:是所有载客类型车的父类,如PassengerAuto类继承了该类 构造抽象类LoadWeight类:是所有既载客又载货车型的父类,如Truck类继承了该类 构造储存 ...
- java+获取下个小时_Java获取系统时间少8个小时 | 学步园
java获取系统时间问题: public class TestDate { public static void main(String[] args) { System.out.println(&q ...
- java监听焦点事件_java焦点事件监听器是什么?其他事件有哪些?
一般来说,java中的知识点都是具有非常强的衍生性的.往往一个知识点后面还有更多的内容,所以学习起来也是比较费工夫的.关于焦点时间监听器也是比较难的,一起来了解一下吧. 首先我们需要知道的是,除了单击 ...
最新文章
- 计算机的起源英语作文,冰箱的起源英语作文
- 4)线性表[顺序表和链表]
- 周五下午3.5h直播丨今年第1期大咖讲坛:数据库高可用容灾方案的实践与探索...
- POJ3752 字母旋转游戏【水题】
- 计算机网络实验室布线实验,网络综合布线实验室建设
- MATLAB 输出当前时间
- 各历史版本NDK下载地址
- linux运行关关采集器,杰奇小说2.3-自动采集-关关采集器高级版
- 盘点城市智慧水务领域的英文期刊
- ospf学习-----LSA类型以及stub、nssa区域
- 向量代数:混合积、双重外积与拉格朗日恒等式
- 云南人,你的家乡在哪里?
- 程序员为什么不写注释
- 虚幻引擎(UE4) UMG 创建菜单
- org.apache.felix.http.jetty %bundles.pluginTitle: Cannot start (org.osgi.framework.BundleException:
- 选择第K大元素(快排、快选以及k-选取比较)
- Nginx源码阅读:ngx_palloc 内存池
- 在altium designer原理图中如何查找相同的网络标号?
- Baumer工业相机堡盟工业相机如何联合BGAPISDK和佳能EF变焦镜头实现相机的自动变焦(C++)
- 推荐 130 个令你眼前一亮的网站,总有一个用得着
热门文章
- 线上故障之-内存问题
- 我的梦想是成为一名计算机程序员英语怎么说,我的梦想英语作文带翻译八篇(I have a dream)...
- java线程栅栏_用栅栏(CyclicBarrier)实现高并发测试
- 统一社会信用代码验证
- iOS App配置 Universal Link通用链接
- 更改C盘用户目录下的用户名(亲测有效)
- BZOJ3162: 独钓寒江雪
- 永中office linux卸载,永中office2012forLinux的安装卸载
- 苹果保修期查询_苹果手机维修为什么这么贵?
- PHP手册 2009国庆版