Java中使用java.awt.datatransfer.Clipboard类来描述剪切板,并把剪切板分为两种类型:本地和系统,本地剪切板使用 Clipborad cp = new Clipboard("clip1"); 来构造;系统剪切板通过

Clipboard sysc = Toolkit.getDefaultToolkit().getSystemClipboard();

获取,下面我们给出几个常用的方法用于读写剪切板中的文本数据以及图像数据

1. 从指定的剪切板中获取文本内容

protected static String getClipboardText(Clipboard clip) throws Exception{

// 获取剪切板中的内容

Transferable clipT = clip.getContents(null);

if (clipT != null) {

// 检查内容是否是文本类型

if (clipT.isDataFlavorSupported(DataFlavor.stringFlavor))

return (String)clipT.getTransferData(DataFlavor.stringFlavor);

}

return null;

}

2. 往剪切板写文本数据

protected static void setClipboardText(Clipboard clip, String writeMe) {

Transferable tText = new StringSelection(writeMe);

clip.setContents(tText, null);

}

3. 从剪切板读取图像

public static Image getImageFromClipboard() throws Exception{

Clipboard sysc = Toolkit.getDefaultToolkit().getSystemClipboard();

Transferable cc = sysc.getContents(null);

if (cc == null)

return null;

else if(cc.isDataFlavorSupported(DataFlavor.imageFlavor))

return (Image)cc.getTransferData(DataFlavor.imageFlavor);

return null;

}

4. 写图像到剪切板

protected static void setClipboardImage2(final Image image) {

Transferable trans = new Transferable(){

public DataFlavor[] getTransferDataFlavors() {

return new DataFlavor[] { DataFlavor.imageFlavor };

}

public boolean isDataFlavorSupported(DataFlavor flavor) {

return DataFlavor.imageFlavor.equals(flavor);

}

public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {

if(isDataFlavorSupported(flavor))

return image;

throw new UnsupportedFlavorException(flavor);

}

};

Toolkit.getDefaultToolkit().getSystemClipboard().setContents(trans, null);

}

有了这四个方法,你下面可以自己写一些程序来进行测试,利用它来实现与其他程序结合测试对剪切板数据的操作。这里给出一个用于显示图像的类,只要把Image实例作为参数传入即可。

/*

* Created on 2004-12-23

* 查看图形的窗口

*/

package javayou.clipboard;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.MediaTracker;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

/**

*

@author Winter Lau 用于显示图形的窗口

*/

public class ImageViewer extends Frame {

private Image image;

/**

* 显示一个图像

* @param viewMe

*/

public ImageViewer(Image viewMe) {

image = viewMe;

MediaTracker mediaTracker = new MediaTracker(this);

mediaTracker.addImage(image, 0);

try {

mediaTracker.waitForID(0);

} catch (InterruptedException ie) {

ie.printStackTrace();

System.exit(1);

}

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

//窗口适应图像大小

setSize(image.getWidth(null), image.getHeight(null));

//窗口标题

setTitle("Viewing Image from Clipboard");

setVisible(true);

}

public void paint(Graphics graphics) {

graphics.drawImage(image, 0, 0, null);

}

/**

* 用于读取图像文件并生成Image对象

*/

public static Image getImageFromFile(String fileName) {

Toolkit toolkit = Toolkit.getDefaultToolkit();

Image image = toolkit.getImage(fileName);

return image;

java 获取剪切板文件_如何在Java程序中读写系统剪切板的数据相关推荐

  1. 在java读字符串入文件_如何在java中将文件读入字符串?

    我已经将文件读入String. 该文件包含各种名称,每行一个名称. 现在的问题是我想在String数组中使用这些名称. 为此我写了以下代码: String [] names = fileString. ...

  2. java eclipse导入工程文件_如何在Eclipse软件中导入Java工程文件

    有些在学习Java编程的用户虽然会创建工程,但是对于怎么导入工程文件却不清楚,下面这篇教程我们就来为大家介绍一下,在Eclipse软件中导入Java工程文件的方法,有兴趣的朋友就来了解一下吧. 解决方 ...

  3. matlab分析xml文件_如何在Java中读取XML文件(DOM分析器)

    matlab分析xml文件 Today we will learn how to read the XML file in Java. We will also learn how to parse ...

  4. java将输出结果写入csv文件_如何在Java中将数据写入.csv文件?

    名为OpenCSV的库提供API来从.CSV文件读取数据或将数据写入.CSV文件.此处说明了如何使用Java程序写入.csv文件的内容. Maven依赖 com.opencsv opencsv 4.4 ...

  5. java 检测目录下的文件_如何在Java中检查文件是目录还是文件

    java 检测目录下的文件 java.io.File class contains two methods using which we can find out if the file is a d ...

  6. java字符串字符排列组合_如何在Java中查找字符串的所有排列

    java字符串字符排列组合 In this tutorial, we will learn how to find the permutation of a String in a Java Prog ...

  7. java 获取 反射 方法 名_乐字节Java反射之一:反射概念与获取反射源头Class

    一.Java反射机制概念 "程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言",如Python, Ruby是动态语言:显然C++,Java,C#不是动态语言,但是JAV ...

  8. java web 自定义标签_如何在JavaWeb程序中使用自定义标签

    展开全部 tld定义格式32313133353236313431303231363533e78988e69d8331333361323566 [java] view plain copy print? ...

  9. java 查找链表中间元素_如何在Java中一次性查找Java中链表的中间元素

    如何在一次传递中找到LinkedList的中间元素?这是一个 Java 和非Java程序员面试时经常被问到的编程问题.这个问题类似于检查回文或计算阶乘,有时也会要求编写代码.为了回答这个问题,候选人必 ...

  10. java 合并两个列表_如何在Java中合并两个列表?

    java 合并两个列表 Merging two lists in Java is often a useful operation. These lists can be ArrayLists or ...

最新文章

  1. 【组队学习】【35期】李宏毅机器学习(含深度学习)
  2. 关于MySQL线程池,这也许是目前最全面的实用帖!
  3. Android LruCache 压缩图片 有效避免程序OOM
  4. JAVA用多线程反而变慢了_Java中使用多线程不能明显提高程序效率的一些原因
  5. 七十二、Springboot整合MyBatis(配置文件版)
  6. boost::mpl::plus相关的测试程序
  7. 全球计算机与工程学科排名:MIT夺冠 中国23所高校上榜
  8. 【python】Macbook的Anaconda查看、创建和管理python环境
  9. app软件测试是否强制升级_这些测试方法对于任何软件都必须是强制性的
  10. js获取本月或指定月份的最后一天
  11. 中国象棋源码c语言,中国象棋C语言源代码.doc
  12. python \__call__
  13. 代码检测vc2013环境是否已经安装了
  14. C# OpenXml组件
  15. “传递关爱 感恩社会” ——美斯坦福2017年捐资助学仪式隆重举行
  16. java 程序员发展
  17. EtherNet IP /Modbus 网关ENB-302MI
  18. Android学习|动画——逐帧、补间、属性动画
  19. 我是一个SDN交换机
  20. HTML实现A4模板

热门文章

  1. c语言 文件指针移动一位,c语言怎样移动文件指针到制定位置?
  2. PhotoshopCC2019改变证件照的底色---超实用的两种方法
  3. 绘制附带 AHT20 温湿度传感器的 stm32 电路原理图
  4. mybatis在配置mapper.xml时出现 tag name excepted 问题
  5. Python-struct
  6. Hive常用命令之MSCK REPAIR TABLE命令概述
  7. php laravel日志报错,Laravel 文档阅读:错误 日志记录
  8. Ubalun电动牙刷拆卸及内部刨析
  9. 一个非常好用的批量图片压缩工具
  10. 项目管理计划怎么写?这9大步骤要知道