如何在Java程序中读写系统剪切板的数据
来源:互联网 发布:在香港用淘宝 编辑:程序博客网 时间:2024/05/22 11:36
Java中使用java.awt.datatransfer.Clipboard类来描述剪切板,并把剪切板分为两种类型:本地和系统,本地剪切板使用 Clipborad cp = new Clipboard("clip1"); 来构造;系统剪切板通过Clipboard sysc = Toolkit.getDefaultToolkit().getSystemClipboard();获取,下面我们给出几个常用的方法用于读写剪切板中的文本数据以及图像数据1. 从指定的剪切板中获取文本内容protected static String getClipboardText(Clipboard clip) throws Exception{// 获取剪切板中的内容Transferable clipT = clip.getContents(null);if (clipT != null) {// 检查内容是否是文本类型if (clipT.isDataFlavorSupported(DataFlavor.stringFlavor))return (String)clipT.getTransferData(DataFlavor.stringFlavor);}return null;}2. 往剪切板写文本数据protected static void setClipboardText(Clipboard clip, String writeMe) {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. 写图像到剪切板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);}有了这四个方法,你下面可以自己写一些程序来进行测试,利用它来实现与其他程序结合测试对剪切板数据的操作。这里给出一个用于显示图像的类,只要把Image实例作为参数传入即可。/** Created on 2004-12-23* 查看图形的窗口*/package javayou.clipboard;import java.awt.Frame;import java.awt.Graphics;import java.awt.Image;import java.awt.MediaTracker;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;/*** @author Winter Lau 用于显示图形的窗口*/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;
0 0
- 如何在Java程序中读写系统剪切板的数据
- 在无clipboard 的vim 中, 如何使用系统剪切板
- 在Java中操控剪切板数据- -
- java的系统剪切板如何获取一个文本的内容
- 在java程序中如何读写带有Geometry对象的表
- 读写系统剪切板
- 在剪切板中使用自定义格式的数据
- Java中剪切板的操作
- Java中剪切板的操作
- Mac 的 Vim 如何使用系统剪切板
- JAVA程序如何在win7系统中开机启动详解
- MFC中剪切板的使用 把数据拷贝到剪切板和从剪切板中读数据
- 如何在java程序中导入excel数据
- 如何在你的java程序中注册系统级热键
- 如何在你的java程序中注册系统级热键
- 如何在你的java程序中注册系统级热键
- Java源码-简单的剪切板程序
- Java调用系统剪切板
- OJ1914(改进,通过OJ检测)
- Socket数据通信
- Spring
- JAVA调用R语言之Rserve(二)
- openwrt启动流程
- 如何在Java程序中读写系统剪切板的数据
- 如何直观理解AUC评价指标?
- AppBarLayout CollapsingToolbarLayout 的进一步使用
- Linux利用list_head结构实现双向链表
- <ROS> pluginlib理解与示例
- 文件上传-------fileUpload
- Canvas文字渲染
- 关于使用eclipse开发android应用,更换jdk1.8之后遇到的eclipse闪退以及更换jdk1.7之后运行项目报错:Unsupported major.minor version 52.0
- 泛型 (下) - 细节和局限性