Java操作系统剪切板Clipboard及自定义剪切板
来源:互联网 发布:现代舞服装淘宝 编辑:程序博客网 时间:2024/06/05 08:43
转自:
系统剪切板:
系统剪切板一般支持String文本类型和Image图像类型:
String文本类型
插入:
- Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();//获取系统剪切板
- String str = "哈哈";//设置字符串
- StringSelection selection = new StringSelection(str);//构建String数据类型
- clipboard.setContents(selection, selection);//添加文本到系统剪切板
获取:
- Transferable content = clipboard.getContents(null);//从系统剪切板中获取数据
- if (content.isDataFlavorSupported(DataFlavor.stringFlavor)) {//判断是否为文本类型
- String text = (String) content.getTransferData(DataFlavor.stringFlavor);//从数据中获取文本值
- if (text == null) {
- return;
- }
- System.out.println(text);
- }
图像类型:
public class ImageSelection implements Transferable{
private static DataFlavor[] flavors={DataFlavor.imageFlavor};
private Image image;
public ImageSelection(Image image) {
// TODO Auto-generated constructor stub
this.image=image;
}
@Override
public DataFlavor[] getTransferDataFlavors() {
// TODO Auto-generated method stub
return (DataFlavor[])flavors.clone();
}
@Override
public boolean isDataFlavorSupported(DataFlavor flavor) {
// TODO Auto-generated method stub
if(DataFlavor.imageFlavor.equals(flavor)){
return true;
}
return false;
}
@Override
public Image getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
// TODO Auto-generated method stub
if(flavor.equals(DataFlavor.imageFlavor)){
return image;
}else{
throw new UnsupportedFlavorException(flavor);
}
}
自定义剪切板:
首先需要写一个数据类:
- public class TestSelection implements Transferable, ClipboardOwner {
- public static final DataFlavor rangeFlavor = new DataFlavor(RangeDataModel.class, "Report Range");//class为自定义的java类 字串随便
- private static final DataFlavor[] flavors = { rangeFlavor };
- private Object data;
- public TestSelection(Object data) {
- this.data = data;
- }
- @Override
- public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
- if (flavor.equals(flavors[RANGE])) {
- return data;
- } else {
- throw new UnsupportedFlavorException(flavor);
- }
- }
- @Override
- public DataFlavor[] getTransferDataFlavors() {
- return (DataFlavor[]) flavors.clone();
- }
- @Override
- public boolean isDataFlavorSupported(DataFlavor flavor) {
- for (int i = 0; i < flavors.length; i++) {
- if (flavor.equals(flavors[i])) {
- return true;
- }
- }
- return false;
- }
- @Override
- public void lostOwnership(Clipboard clipboard, Transferable contents) {
- // TODO Auto-generated method stub
- }
- }
然后就是设置值:
- Clipboard clipboard = new Clipboard("clipboardName");//创建自定义剪切板对象
- ReportSelection content = new ReportSelection(data);//构建数据对象 data为数据类型java类的对象
- clipboard.setContents(content, null);
获取值:
- Transferable content = clipboard.getContents(null);//注意 自定义剪切板必须给null参数
- if (content.isDataFlavorSupported(ReportSelection.rangeFlavor)) {
- RangeDataModel data = (RangeDataModel) content.getTransferData(ReportSelection.rangeFlavor);
- System.out.println(data);
- }
- Java操作系统剪切板Clipboard及自定义剪切板
- 剪切板clipboard
- java 剪切板 clipboard.js 与 ZeroClipboard.swf
- 剪切板Clipboard、SetComponent、GetComponent
- Clipboard 剪切板 成员,类,方法
- Clipboard 剪切板的应用&&Action
- java剪切板
- 剪切板
- 剪切板
- 剪切板
- 剪切板
- 剪切板
- 剪切板
- 剪切板
- 剪切板
- MFC之剪切板(Clipboard)操作
- Android跨进程数据通讯-剪切板Clipboard
- android中剪切板的应用(clipboard)
- 机器视觉资源:计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
- struts2的项目目录及承担的作用(写了注册验证来帮助理解)
- 进制转换,打印99乘法表
- openstack错误日志查看方法
- 震惊!用了此方法后,TLE的代码AC了!
- Java操作系统剪切板Clipboard及自定义剪切板
- 负载均衡详解(2)
- [李景山php] 深入理解PHP内核[读书笔记]--第六章:内存管理
- 负载均衡详解(3)
- Qt5.8 读写txt文件
- 作为一名运维人,应该去学习了解的知识
- Google 官方应用架构的最佳实践指南
- 【Linux】手动安装nvidia显卡驱动 ---- Ubuntu 14.04
- java后台随机生成一个数