⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clipboardoper.java

📁 JAVA对剪贴板进行操作的封装 自动对剪贴板的内容进行识别
💻 JAVA
字号:
package os.win32.toolkit;

import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
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.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;

public class ClipboardOper {
	public static final String text = "text"; 		// 剪贴板的内容为文本
	public static final String image = "image"; 	// 剪贴板的内容为图片
	public static final String file = "file"; 		// 剪贴板的内容为文件

	private static Clipboard systemClipboard = java.awt.Toolkit
			.getDefaultToolkit().getSystemClipboard();
	
	
	public static void main(String[] args) {
		
		setContents("haha ");
		
		//文本
		System.out.println(getContent(ClipboardOper.text));
		
		
		//文件
//		java.util.List list = (java.util.List)getContent(ClipboardOper.file);
//		for(Iterator it = list.iterator(); it.hasNext();){ 
//			System.out.println(((File)it.next()).getPath());
//		}

		//图像
//		java.awt.Image image = (java.awt.Image)getContent(ClipboardOper.image);
//		ImageViewer imgViewer = new ImageViewer(image);
	}
	
	/*
	 * 根据传入的类型返回Object对象,如果剪贴板中内容不是此类型,则返回null
	 * 如果传入的类型为null或者"",则以text-image-file这样的顺序先后匹配内容,匹配后取得的objData如果不为null则立即返回
	 */
	public static Object getContent(String strType) {
		strType = strType==null?"":strType;
		
		Transferable content = systemClipboard.getContents(null);
		Object objData=null;
		try{
			if(strType.equals("") || strType.equalsIgnoreCase(ClipboardOper.text)){
				if (content != null && content.isDataFlavorSupported(DataFlavor.stringFlavor)) {
					objData = (String) content.getTransferData(DataFlavor.stringFlavor);
				}
				if(strType.equals("") && objData != null){
					return objData;
				}
			}
			if(strType.equals("") || strType.equalsIgnoreCase(ClipboardOper.image)){
				if (content != null && content.isDataFlavorSupported(DataFlavor.imageFlavor)) {
					objData = (java.awt.Image) content.getTransferData(DataFlavor.imageFlavor);
				}
				if(strType.equals("") && objData != null){
					return objData;
				}
			}
			if(strType.equals("") || strType.equalsIgnoreCase(ClipboardOper.file)){
				if (content != null && content.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
					objData = (java.util.List<File>) content
							.getTransferData(DataFlavor.javaFileListFlavor);
				}
				if(strType.equals("") && objData != null){
					return objData;
				}
			}
		}catch(Exception e) {
			e.printStackTrace();
		}
		return objData;

	}

	public static void setContents(final Object obj) {
		if (obj instanceof java.lang.String) {		//文本
			systemClipboard
					.setContents(new StringSelection((String) obj), null);
		}else if(obj instanceof java.awt.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 obj;
					throw new UnsupportedFlavorException(flavor);
				}
			};

			systemClipboard.setContents(trans, null);
		}else if(obj instanceof java.util.List){	//文件
			Transferable trans = new Transferable() {
				public DataFlavor[] getTransferDataFlavors() {
					return new DataFlavor[] { DataFlavor.javaFileListFlavor };
				}
				public boolean isDataFlavorSupported(DataFlavor flavor) {
					return DataFlavor.javaFileListFlavor.equals(flavor);
				}
				public Object getTransferData(DataFlavor flavor)
						throws UnsupportedFlavorException, IOException {
					if (isDataFlavorSupported(flavor))
						return obj;
					throw new UnsupportedFlavorException(flavor);
				}
			};

			systemClipboard.setContents(trans, null);
		}

	}

}

class ImageViewer extends Frame {

	private Image image;

	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);
	}

	public Image getImageFromFile(String fileName) {
		//Toolkit toolkit = Toolkit.getDefaultToolkit();
		//Image image = toolkit.getImage(fileName);
		return image;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -