博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java读取粘贴板内容
阅读量:5887 次
发布时间:2019-06-19

本文共 3623 字,大约阅读时间需要 12 分钟。

package com.test.jvm.oom.design;import java.awt.Image;import java.awt.Toolkit;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.StringSelection;import java.awt.datatransfer.Transferable;import java.awt.datatransfer.UnsupportedFlavorException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.Reader;public class Test {        /**     *1. 从剪切板获得文字。     */    public static String getSysClipboardText() {        String ret = "";        Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();        // 获取剪切板中的内容        Transferable clipTf = sysClip.getContents(null);        if (clipTf != null) {            // 检查内容是否是文本类型            if (clipTf.isDataFlavorSupported(DataFlavor.stringFlavor)) {                try {                    ret = (String) clipTf                            .getTransferData(DataFlavor.stringFlavor);                } catch (Exception e) {                    e.printStackTrace();                }            }        }        return ret;    }    /**     * 2.将字符串复制到剪切板。     */    public static void setSysClipboardText(String writeMe) {        Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();        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.复制图片到剪切板。     */    public static void setClipboardImage(final Image image)throws Exception {        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);    }    /**     * 5.通过流获取,可读取图文混合     */    public void getImageAndTextFromClipboard() throws Exception{        Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();        Transferable clipTf = sysClip.getContents(null);        DataFlavor[] dataList = clipTf.getTransferDataFlavors();        int wholeLength = 0;        for (int i = 0; i < dataList.length; i++) {            DataFlavor data = dataList[i];            if (data.getSubType().equals("rtf")) {                Reader reader = data.getReaderForText(clipTf);                OutputStreamWriter osw = new OutputStreamWriter(                        new FileOutputStream("d:\\test.rtf"));                char[] c = new char[1024];                int leng = -1;                while ((leng = reader.read(c)) != -1) {                    osw.write(c, wholeLength, leng);                }                osw.flush();                osw.close();            }        }    }}

 

转载于:https://www.cnblogs.com/brant/p/8120294.html

你可能感兴趣的文章
系统集成项目管理(二)
查看>>
6.2实现用户登录逻辑
查看>>
JavaScript 正整数正则表达式
查看>>
单元测试之Stub和Mock
查看>>
solr
查看>>
IOS7 viewDidLoad中调用 pushViewController 的问题
查看>>
oracle merge into 用法详解
查看>>
tf.concat&tf.gather&tf.gather_nd&tf.greater&tf.cast&tf.expand_dims&tf.squeeze
查看>>
VBA基础之Excel 工作表(Sheet)的操作(二)
查看>>
js 日期转换 strToDate
查看>>
空间索引格网大小无效
查看>>
C_数据结构_数组的修改和删除
查看>>
软件测试5gkd
查看>>
伪类与伪元素
查看>>
11.static关键字
查看>>
iOS @try
查看>>
数据结构之栈——二进制转十进制
查看>>
关于Objective-C和C++中的继承及其区别
查看>>
$().bind()的返回值
查看>>
16 个常用的yum 命令
查看>>