Java取得剪貼板中的內容數據

gbd8 9年前發布 | 4K 次閱讀 Java

ClipboradOperate.java

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.IOException;

public class ClipboradOperate { /**@Description:

 * @author zhk
 * @createtime 2012-7-12 上午11:33:06   
 * @param args
 */
public static void main(String[] args) {
    Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();//獲取系統剪貼板

    try {
        ImageViewer im=new ImageViewer(getImageFromClipboard());
    }catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
/**
 * 從指定的剪切板中獲取文本內容
 * 本地剪切板使用 Clipborad cp = new Clipboard("clip1"); 來構造
 * 系統剪切板使用  Clipboard sysc = Toolkit.getDefaultToolkit().getSystemClipboard();
 * 剪切板的內容   getContents(null); 返回Transferable
 */
protected static String getClipboardText() throws Exception{
    Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();//獲取系統剪貼板
    // 獲取剪切板中的內容
    Transferable clipT = clip.getContents(null);
    if (clipT != null) {
    // 檢查內容是否是文本類型
    if (clipT.isDataFlavorSupported(DataFlavor.stringFlavor))
    return (String)clipT.getTransferData(DataFlavor.stringFlavor); 
    }
    return null;
}

 //往剪切板寫文本數據
 protected static void setClipboardText(Clipboard clip, String writeMe) {
     Transferable tText = new StringSelection(writeMe);
     clip.setContents(tText, null);
 }

 // 從剪切板讀取圖像
 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;
 }
 // 寫圖像到剪切板
 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);
 }

} </pre>

ImageViewer.java

/*

  • 查看圖形的窗口 */ import java.awt.Frame; import java.awt.Graphics; import java.awt.Image; import java.awt.MediaTracker; import java.awt.Toolkit; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; /**
  • 用于顯示圖形的窗口 */ 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; } }</pre>
 本文由用戶 gbd8 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!