packagecom.test.jvm.oom.design;importjava.awt.Image;importjava.awt.Toolkit;importjava.awt.datatransfer.Clipboard;importjava.awt.datatransfer.DataFlavor;importjava.awt.datatransfer.StringSelection;importjava.awt.datatransfer.Transferable;importjava.awt.datatransfer.UnsupportedFlavorException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.OutputStreamWriter;importjava.io.Reader;public classTest {/***1. 从剪切板获得文字。*/
public staticString 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();
}
}
}returnret;
}/*** 2.将字符串复制到剪切板。*/
public static voidsetSysClipboardText(String writeMe) {
Clipboard clip=Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable tText= newStringSelection(writeMe);
clip.setContents(tText,null);
}/***3. 从剪切板获得图片。*/
public static Image getImageFromClipboard() throwsException {
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)throwsException {
Transferable trans= newTransferable() {publicDataFlavor[] getTransferDataFlavors() {return newDataFlavor[] { DataFlavor.imageFlavor };
}public booleanisDataFlavorSupported(DataFlavor flavor) {returnDataFlavor.imageFlavor.equals(flavor);
}publicObject getTransferData(DataFlavor flavor)throwsUnsupportedFlavorException, IOException {if(isDataFlavorSupported(flavor))returnimage;throw newUnsupportedFlavorException(flavor);
}
};
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(trans,null);
}/*** 5.通过流获取,可读取图文混合*/
public void getImageAndTextFromClipboard() throwsException{
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= newOutputStreamWriter(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();
}
}
}
}