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相关推荐

  1. java 中调用window系统中的文件,或者执行命令(shell、.CMD、.EXE)并获取返回值

    原文:http://blog.csdn.net/ligaoyang/article/details/6755327 测试能拿返回值,但是在getErrorStream里, import java.io ...

  2. java中调用python

    在Java中调用Python </h1><div class="clear"></div><div class="postBod ...

  3. android闹钟例子,自己软件中调用android系统闹钟

    [实例简介] 自己软件中调用android系统闹钟! 综合网上资料,得来 [实例截图] [核心代码] 54ba60f3-fa09-4e61-b3ab-c4fca16d07b2 └── CallSyst ...

  4. java中调用 dll 动态库的简洁方法 JNative

    Java中调用DLL方法,是通过JNI接口实现的,http://www.ibm.com/developerworks/cn/java/l-linux-jni/ 这里有详细的说明.大概是先用Java写一 ...

  5. JAVA中调用阿里云语音通知Api并接收消息回执

    JAVA中调用阿里云语音通知Api并接收消息回执 配置文件 需要的包 <dependency><groupId>com.aliyun</groupId><ar ...

  6. 【Java】-在Java中调用大漠插件

    目录 在Java中调用大漠插件步骤 常见问题 Java与Dll函数的数据通信(一个比较大的坑) 注册了大漠高版本后,如何更换为低版本? Description: 80020010 / 无效的被呼叫方. ...

  7. 一步一步教会你JAVA中调用C++

    装载自:http://blog.csdn.net/chenjin_zhong/article/details/5870305 一.JNI简介 JNI:Java Native Interface,是Ja ...

  8. Matlab函数打包为.jar后在java中调用出现错误:Exception:com.mathworks.toolbox.javabuilder.MWException: An error occur

    Matlab函数打包为.jar后在java中调用出现错误:Exception:com.mathworks.toolbox.javabuilder.MWException: An error occur ...

  9. java中调用dll文件的两种方法

    https://www.cnblogs.com/huozhong/p/5830485.html JNA地址:http://blog.csdn.net/shendl/article/details/35 ...

最新文章

  1. linux服务器打包命令,linux 打包命令tar(主要用于服务器之间迁移资源文件)
  2. MYSQL-使用mysqldump创建数据库快照
  3. Py之Seaborn:数据可视化Seaborn库的柱状图、箱线图(置信区间图)、散点图/折线图、核密度图/等高线图、盒形图/小提琴图/LV多框图的组合图/矩阵图实现
  4. python2与python3在absolute import的区别
  5. Mybatis-Plus驼峰命名规则之Date类型字段返回值为null
  6. 用asp.net+Jquery+Ajax+sqlserver编写的 (英语六级记单词)
  7. 云小课 | MRS基础入门之HDFS组件介绍
  8. DotNet控件缩写
  9. 服务器怎么设置虚拟网卡,VMWare虚拟网卡配置
  10. 【基础数学】Jensen不等式
  11. BLE蓝牙4.0串口调试助手
  12. 下载全球任意台站的连续地震数据
  13. FreeMarker下拉列表选中值回显
  14. linux基本概念知识整理
  15. 【Linux】计算机的软硬件体系结构
  16. android 二维码扫描动画实现
  17. 【佛系养身】男程序员护肤入门
  18. CRC校验 串行 并行 长除 移位 查表 矩阵
  19. 贝壳创始人左晖去世,一周前才成地产新首富
  20. 服务器上运行Geant4例子XQuartz的问题

热门文章

  1. 有人说“如今聪明的年轻人上班,愚蠢的年轻人创业!”对此大家怎么看?
  2. 我们一家三口不和双方父母来往了怎么办?
  3. 护士资格考试难不难?护士资格考试通过率怎么样?
  4. 当年资本家倒掉牛奶,到底是怎么回事?
  5. 你是否遇到过职业枯竭?
  6. C++低级程序设计支持规则
  7. 如何用MobaXterm查看日志信息以及xml
  8. sql面试题sql语句_第二轮SQL面试问题
  9. sql server序列_SQL Server中身份和序列之间的区别
  10. unity相机围绕模型转_围绕我们的业务模型和风险进行安全测试