11.9.2 传递文本
11.9.2 传递文本
传递文本是最简单的情形,因为AWT
已经提供了一个StringSelection
用于传输文本字符串。
将文本放入剪贴板
将一段文本内容(字符串对象)放进剪贴板中的步骤如下。
1. 创建一个Clipboard实例
既可以创建系统剪贴板,也可以创建本地剪贴板。
创建系统剪贴板通过如下代码:
1 | Clipboard clipboard= Toolkit.getDefaultToolkit().getSystemClipboard(); |
创建本地剪贴板通过如下代码:
1 | Clipboard clipboard =new Clipboard("cb"); |
2. 将需要放入剪贴板中的字符串封装成StringSelection对象
如下代码所示:
1 | StringSelection st =new StringSelection(targetStr); |
3. 调用setContents方法
调用剪贴板对象的setContents()方法将StringSelection放进剪贴板中,该方法需要两个参数,
- 第一个参数是
Transferable
对象,代表放进剪贴板中的对象; - 第二个参数是
ClipboardOwner
对象,代表剪贴板数据的持有者,通常无须关心剪贴板数据的持有者,所以把第二个参数设为null
。
1 | clipboard.setContents(st,null); |
从剪贴板中取出数据
从剪贴板中取出数据则比较简单,调用Clipboard
对象的getData(DataFlavor flavor);
方法即可取出剪贴板中指定格式的内容,如果指定flavor
的数据不存在,该方法将引发UnsupportedFlavorException
异常。为了避免出现异常,可以先调用Clipboard
对象的isDataFlavorAvailable(DataFlavor flavor);
方法来判断指定flavor
的数据是否存在。如下代码所示:
1 | if (clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor)) |
实例
下面程序是一个利用系统剪贴板进行复制、粘贴的简单程序。
1 | import java.awt.*; |
上面程序中“复制”按钮的事件监听器负责将第一个文本域的内容复制到系统剪贴板中,“粘贴”按钮的事件监听器则负责取出系统剪贴板中的stringFlavor
内容,并将其添加到第二个文本域内。运行上面程序,将看到如图11.32所示的结果。
因为程序使用的是系统剪贴板,因此可以通过Windows
的剪贴簿查看器来查看程序放入剪贴板中的内容。在Windows
的“开始”菜单中运行“clipbrd
”程序,将可以看到如图11.33所示的窗口。
提示:Windows7
系统已经删除了默认的剪贴板查看器,因此读者可以到WindowsXP
的C:\windows\system32\
目录下将clipbrd.exe
文件复制过来。