11.9 剪贴板
当进行复制、剪切、粘贴等Windows操作时,也许读者从未想过这些操作的实现过程。
复制 剪切 粘贴操作过程
实际上这是一个看似简单的过程:
- 复制、剪切把一个程序中的数据放置到剪贴板中,
- 而粘贴则读取剪贴板中的数据,并将该数据放入另一个程序中。
剪贴板的复制、剪切和粘贴的过程看似很简单,但实现起来则存在一些具体问题需要处理——假设从一个文字处理程序中复制文本,然后将这段文本复制到另一个文字处理程序中,肯定希望该文字能保持原来的风格,也就是说,剪贴板中必须保留文字原来的格式信息;如果只是将文字复制到纯文本域中,则可以无须包含文字原来的格式信息。除此之外,可能还希望将图像等其他对象复制到剪贴板中。为了处理这种复杂的剪贴板操作,数据提供者(复制、剪切内容的源程序)允许使用多种格式的剪贴板数据,而数据的使用者(粘贴内容的目标程序)则可以从多种格式中选择所需的格式。
AWT剪贴板
提示:
因为AWT
的实现依赖于底层运行平台的实现,因此AWT
剪贴板在不同平台上所支持的传输的对象类型并不完全相同。其中Microsoft
、Macintosh
的剪贴板支持传输富格式文本、图像、纯文本等数据,而XWindow
的剪贴板功能则比较有限,它仅仅支持纯文本的剪切和粘贴。读者可以通过查看JRE
的jre/lib/flavormap.properties
文件来了解该平台支持哪些类型的对象可以在Java
程序和系统剪贴板之间传递。
AWT剪贴板分类
AWT
支持两种剪贴板:本地剪贴板和系统剪贴板。
- 如果在同一个虚拟机的不同窗口之间进行数据传递,则使用
AWT
自己的本地剪贴板就可以了。本地剪贴板则与运行平台无关,可以传输任意格式的数据。 - 如果需要在不同的虚拟机之间传递数据,或者需要在
Java
程序与第三方程序之间传递数据,那就需要使用系统剪贴板了。
原文链接: 11.9 剪贴板