在Java中操控剪切板数据- -
来源:互联网 发布:知解的成语 编辑:程序博客网 时间:2024/05/27 16:40
通过操作系统的剪切板,可以实现在不同的程序中拷贝和粘贴数据。一些用Java写的程序例如很多开发环境也可以访问到剪切板,本文就是研究如何在Java程序中读写系统剪切板的数据。
通过操作系统的剪切板,可以实现在不同的程序中拷贝和粘贴数据。一些用Java写的程序例如很多开发环境也可以访问到剪切板,本文就是研究如何在Java程序中读写系统剪切板的数据。
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中操控剪切板数据- -
- 如何在Java程序中读写系统剪切板的数据
- 在剪切板中使用自定义格式的数据
- Java中剪切板的操作
- Java中剪切板的操作
- MFC中剪切板的使用 把数据拷贝到剪切板和从剪切板中读数据
- 从DW中取数据到剪切板
- java怎么获取剪切板数据代码示例
- Unity 在Editor中使用剪切板
- Java中有关剪切板的操作
- java剪切板
- 在Python中使用PyMongo操控MongoDB的方法
- CS,二,数据操控
- 02_数据操控
- 在浏览器中实现复制内容到剪切板中
- VB.net 监视Windows剪切板中数据变化
- Java实现——将数据存入剪切板
- java操控Excel表格
- 公司的同事要辞职
- Hashtable 示例
- STL序列式容器中删除元素的方法和陷阱一
- C++对象的拷贝与赋值操作
- 水晶报表的一些解决方法
- 在Java中操控剪切板数据- -
- A very simple MFC class to Encode and Decode an url string
- 周岁了~~生日快乐
- 浅谈ASP.NET的权限管理和用户验证
- STL序列式容器中删除元素的方法和陷阱二
- Google第一美女的工作流程 晚上12点才回家
- MySQL数据库函数详解
- 英文及数字全/半角转换
- 关于hibernate 利用c3p0连接mysql 数据库