zoukankan      html  css  js  c++  java
  • Java读取粘贴板内容

    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();
                }
            }
        }
    }
  • 相关阅读:
    Lecture04_转换控制_GAMES101 课堂笔记——2020.2.21
    自动求梯度(pytorch版本)——2020.2.20
    深度学习之线性回归从零实现
    Lecture03_Transformation(变换)_GAMES101 课堂笔记——2020.2.18
    使用jupyter切换子环境,以及导致的`找不到指定模块`和`找不到指定的程序`问题
    多层感知机从0开始实现(Pytorch版本)——2020.2.16
    《动手学深度学习》(pytorch版本)中`d2lzh_pytorch`包问题
    Lecture02_向量与线性代数_GAMES101 课堂笔记——2020.2.14
    数据结构与算法(24)——优先队列和二叉堆
    剑指 Offer 06. 从尾到头打印链表
  • 原文地址:https://www.cnblogs.com/brant/p/8120294.html
Copyright © 2011-2022 走看看