如何在Java程序中读写系统剪切板的数据
2016-10-28 18:36
591 查看
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;
相关文章推荐
- 如何使用java在系统剪切板中设置可以在富文本编辑器中粘贴的图片数据 - sunng
- 如何避免Java程序的数据脏读问题?
- 如何在java程序中导入excel数据
- 如何用Google APIs和Google的应用系统进行集成(7)----在把JSON转换成XML数据过程中,JSON数据中包含违背XML数据规范:XML节点名不支持数字的Java解决方案
- 如何在Java程序中访问mysql数据库中的数据并进行简单的操作
- java程序中,数据验证,如何判断输入的文本框中的值是不是int型?
- 如何使用Google APIs和Google应用系统集成(7)----在里面JSON兑换XML数据处理,JSON数据包括违规XML数据规范:XML节点名称不支持号码Java解
- 如何让指定程序启动一个Android系统中的Java进程
- 如何复制grid类型的所选择的行的数据到系统剪切板
- Java报表软件--如何在报表系统Style Report中制作环比数据图
- java程序如何向sqlserver中的Text类型字段插入数据?(img/text等等)
- java程序中,数据验证,如何判断输入的文本框中的值是不是int型?
- java读写properties文件,解决系统找不到指定路径,解决写入后读取正常,但文件数据未更新问题
- 如何使用Java读写系统属性?
- JAVA 程序中如何拷贝一个目录下的文件及子目录到另一个目录,如何获取系统环境变量等...
- 如何在JAVA程序中使用Struct一次传入多条数据给Oracle的存储过程
- <<< java如何调用系统程序
- 如何用Java程序改变系统环境变量
- Java报表软件--如何在报表系统Style Report中制作同比数据图
- java程序应用编写如何判断文本框里面的数据类型