java AWT 剪贴板Clipboard
来源:互联网 发布:js append 编辑:程序博客网 时间:2024/06/13 08:44
AWT 支持两种剪贴板:本地剪贴板和系统剪贴板。如果在同一个虚拟机的不同窗口之间进行数据传递,则使用AWT自已的本地剪贴板即可。如果需要在不同的虚拟机之间传递数据,或者要在java程序与第三方程序之间传递数据,就需要使用系统剪贴板了。
数据传递的类和接口:
AWT中剪贴板相关操作的接口和类放在java.awt.datatransfer包下。Clipboard:代表一个剪贴板实例,系统剪贴板 或 本地剪贴板。ClipboardOwner:剪贴板内容的所有者接口,当剪贴板内容的所有权被修改 时,系统会触发该所有者的lostOwnership事件处理器。Transferable:该接口的实例代表放进剪贴板中的传输对象。DataFlavoer:用于表述剪贴板中的数据格式。StringSelection:Tranferable的实现类,用于传输文本字符串。FlavoerListener:数据格式监听器接口。FlavoerEvent:该类的实例封装了数据格式改变的事件。
传递文本:
1.创建一个Clipboard实例,系统剪贴板 或 本地剪贴板。
创建系统剪贴板代码:
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
创建本地剪贴板代码:
Clipboard clipboard = new Clipboard(“cb”);
2.将需要放入剪贴板中的字符串封装成StringSelection对象:
StringSelection st = new StringSelection(targetStr);
3.调用剪贴板对象的setContents()方法将StringSelection放进剪贴板中,该方法需要两个参数,第一个是Transferable对象,代表放进剪贴板中的对象。第二个参数是ClipboardOwner对象,代表剪贴板数据的所有者,通常我们无须关心剪贴板数据的所有者,所以可以所第二个参数设为null.
clipboard.setContents(st, null);
从剪贴板中取出数据:
调用Clipboard对象的getData(DataFlavor flavor)方法即可取出剪贴板中指定格式的内容,如果指定flavor的数据不存在,该方法将引发UnsupportedFlavorException异常。为避免出现异常,可以先调用Clipboard对象的isDataFlavorAvaliable(DataFlavor flavor)来判断指定的数据是否存在:
if (clipboard.isDataFlavorAvaliable(DataFlavor.stringFlavor)) {
String content = (String)clipable.getData(DataFlavor.stringFlavor);
}
系统剪贴板进行复制,粘贴实例:
package javaAWT;import java.awt.BorderLayout;import java.awt.Button;import java.awt.Frame;import java.awt.Panel;import java.awt.TextArea;import java.awt.Toolkit;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.StringSelection;import java.awt.datatransfer.UnsupportedFlavorException;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.IOException;import javax.swing.Box;import javax.swing.BoxLayout;public class SimpleClipboard { private Frame frame = new Frame("SimpleClipboard"); // 获取系统剪切板 private Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); // 创建本地剪切板 //Clipboard clipboard2 = new Clipboard("cb"); // 用于复制文本的文本框 private TextArea jtaCopyTo = new TextArea(5, 20); // 用于粘贴文本的文本框 private TextArea jtaPaste = new TextArea(5, 20); private Button btnCopy = new Button("Copy"); private Button btnPaste = new Button("Paste"); public void init() { Panel panel = new Panel(); panel.add(btnCopy); panel.add(btnPaste); btnCopy.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub // 将一个多行文本域里的字符串封装成StringSelection对象 StringSelection contents = new StringSelection(jtaCopyTo.getText()); // 将StringSelection对象入放剪切板中 clipboard.setContents(contents, null); } }); btnPaste.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub // 如果剪切板包含stringFlavor内容 if (clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor)) { String content; try { content = (String)clipboard.getData(DataFlavor.stringFlavor); jtaPaste.append(content); } catch (UnsupportedFlavorException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } }); frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { // TODO Auto-generated method stub super.windowClosing(e); System.exit(0); } }); // 创建一个水平排列的Box容器 Box box = new Box(BoxLayout.X_AXIS); // 将两个多行文本域放在box容器中 box.add(jtaCopyTo); box.add(jtaPaste); // 将按钮的在的Panel , Box容器添加到Frame窗口中 frame.add(panel, BorderLayout.SOUTH); frame.add(box, BorderLayout.CENTER); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { new SimpleClipboard().init(); }}
- java AWT 剪贴板Clipboard
- 剪贴板(Clipboard)
- java AWT 使用系统剪贴板传递图像
- 关于java.awt.datatransfer.Clipboard的复制图片等等
- android clipboard 剪贴板 新方法
- 第二例:Clipboard剪贴板
- win10 UWP 剪贴板 Clipboard
- Android Clipboard(复制/剪贴板)
- Android Clipboard(复制/剪贴板)
- Android Clipboard(复制/剪贴板)
- Android Clipboard(复制/剪贴板)
- Java操作系统剪贴板(Clipboard)实现复制和粘贴
- C++ builder 剪贴板Clipboard使用
- VC++中使用剪贴板clipboard
- Zero Clipboard复制到剪贴板
- clipboard.js 复制到剪贴板
- Java Clipboard
- 9-3 处理剪贴板(Clipboard Handling)
- SpringMVC框架执行原理时序图
- 素数判断方法
- Java中的泛型
- iOS 代码规范~加载xib
- [自然语言处理] (6) 主题提取 + 文本实体标注
- java AWT 剪贴板Clipboard
- WebApi 自带Json返回日期带T无法格式化的问题
- 动态库与静态库
- tomcat配置热部署(maven插件配合热部署)
- KMP-类型总结
- [BZOJ4195][NOI2015]程序自动分析(离散化+并查集)
- 【输出两个数之间所有素数】小技巧
- Java_final修饰符总结
- 洛谷10月月赛R1·浴谷八连测R1·提高组