在Java中调用与系统有关的剪切板Clipboard
java从1.5版开始已经能与系统的剪切板很好的交互了。
如果可以在程序中直接调用系统的剪切板来保存“复制”的对象内容,那可以说的比之前的想法好很多。
下面是一个对java.io.File对象进行copy,paste操作的例子,虽然还不完善,但可以在程序中很好的使用。
/* * 定义为传输操作提供数据所使用的类的接口 * 专用于java.io.File类型 */ package angel.datatransfer;import java.awt.datatransfer.*; import java.io.*;import angel.*;public class FileTransfer implements Transferable { private File file;public FileTransfer(File file) {this.file=file; }public Object getTransferData(DataFlavor flavor) {if(isDataFlavorSupported(flavor)){return file;}else{return null;} }public DataFlavor[] getTransferDataFlavors() {return new DataFlavor[] {new DataFlavor(file.getClass(),DataFlavor.javaJVMLocalObjectMimeType)}; }public boolean isDataFlavorSupported(DataFlavor flavor) {return flavor.isMimeTypeEqual(DataFlavor.javaJVMLocalObjectMimeType); } }//在点击“复制”菜单是,调用: Transferable trans = new FileTransfer(this.getSelectedFile());Toolkit.getDefaultToolkit().getSystemClipboard().setContents(trans, null);//返回Clipboard剪切板当前的数据 public Object getClipboardData() {try{ Transferable tran=Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);if(tran.isDataFlavorSupported(new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType))){Object obj=tran.getTransferData(new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType));if(obj instanceof File){return (File)obj;}else{return null;}}else{return null;}}catch(Exception err){ err.printStackTrace();return null;} }
另外还发现一个功能,在Java程序中还可以简单的监视系统剪切板里的内容变化,不过如果重复复制同一种类型的数据,比如复制了两次不同内容的文本,只会触发一次事件:
//开启系统剪切板的侦听器,侦听器的目标Clipboard更改时调用Toolkit.getDefaultToolkit().getSystemClipboard().addFlavorListener(this);//开启系统剪切板的侦听器,侦听器的目标Clipboard更改时调用public void flavorsChanged(FlavorEvent e){try{ Transferable tran=Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null); System.out.println(tran);}catch(Exception err){err.printStackTrace();}}
名品推荐:欧缇蔻 陌升 依斯凯菲尔
转载于:https://www.cnblogs.com/personnel/p/4582852.html
在Java中调用与系统有关的剪切板Clipboard相关推荐
- java 中调用window系统中的文件,或者执行命令(shell、.CMD、.EXE)并获取返回值
原文:http://blog.csdn.net/ligaoyang/article/details/6755327 测试能拿返回值,但是在getErrorStream里, import java.io ...
- java中调用python
在Java中调用Python </h1><div class="clear"></div><div class="postBod ...
- android闹钟例子,自己软件中调用android系统闹钟
[实例简介] 自己软件中调用android系统闹钟! 综合网上资料,得来 [实例截图] [核心代码] 54ba60f3-fa09-4e61-b3ab-c4fca16d07b2 └── CallSyst ...
- java中调用 dll 动态库的简洁方法 JNative
Java中调用DLL方法,是通过JNI接口实现的,http://www.ibm.com/developerworks/cn/java/l-linux-jni/ 这里有详细的说明.大概是先用Java写一 ...
- JAVA中调用阿里云语音通知Api并接收消息回执
JAVA中调用阿里云语音通知Api并接收消息回执 配置文件 需要的包 <dependency><groupId>com.aliyun</groupId><ar ...
- 【Java】-在Java中调用大漠插件
目录 在Java中调用大漠插件步骤 常见问题 Java与Dll函数的数据通信(一个比较大的坑) 注册了大漠高版本后,如何更换为低版本? Description: 80020010 / 无效的被呼叫方. ...
- 一步一步教会你JAVA中调用C++
装载自:http://blog.csdn.net/chenjin_zhong/article/details/5870305 一.JNI简介 JNI:Java Native Interface,是Ja ...
- Matlab函数打包为.jar后在java中调用出现错误:Exception:com.mathworks.toolbox.javabuilder.MWException: An error occur
Matlab函数打包为.jar后在java中调用出现错误:Exception:com.mathworks.toolbox.javabuilder.MWException: An error occur ...
- java中调用dll文件的两种方法
https://www.cnblogs.com/huozhong/p/5830485.html JNA地址:http://blog.csdn.net/shendl/article/details/35 ...
最新文章
- linux服务器打包命令,linux 打包命令tar(主要用于服务器之间迁移资源文件)
- MYSQL-使用mysqldump创建数据库快照
- Py之Seaborn:数据可视化Seaborn库的柱状图、箱线图(置信区间图)、散点图/折线图、核密度图/等高线图、盒形图/小提琴图/LV多框图的组合图/矩阵图实现
- python2与python3在absolute import的区别
- Mybatis-Plus驼峰命名规则之Date类型字段返回值为null
- 用asp.net+Jquery+Ajax+sqlserver编写的 (英语六级记单词)
- 云小课 | MRS基础入门之HDFS组件介绍
- DotNet控件缩写
- 服务器怎么设置虚拟网卡,VMWare虚拟网卡配置
- 【基础数学】Jensen不等式
- BLE蓝牙4.0串口调试助手
- 下载全球任意台站的连续地震数据
- FreeMarker下拉列表选中值回显
- linux基本概念知识整理
- 【Linux】计算机的软硬件体系结构
- android 二维码扫描动画实现
- 【佛系养身】男程序员护肤入门
- CRC校验 串行 并行 长除 移位 查表 矩阵
- 贝壳创始人左晖去世,一周前才成地产新首富
- 服务器上运行Geant4例子XQuartz的问题