软件开发

当前位置:首页 > 软件开发

《Java核心技术高级特性》(第七章)(续)

7.13.2传递文本

如果要了解数据传递类,最好的方法就是从最简单的情况开始:即在系统剪贴板上传递和获取文本信息。首先,获取一个系统剪贴板的引用:

Clipboard clipboardTooltgetutooloit0o.getSysterelipboardto;

传递给剪贴板的字符串,必须被包装在Str ingSelection对象中。

StringSelection selection = new StringSelection(text);

实际的传递操作是通过调用setContents方法来实现的,该方法将一个String-Selection对象和-个C1i pBoardOwner作为参数。如果不想指定剪贴板所有者的话,可以把第二个参数设置为nu11。

clipboard,setContents(selection, nu11);

下面是反过来的操作:从剪贴板中读取- -个字符串:

DataFlavor flavor = DataFlavor .stringF1avor;
if (clipboard.isDataFlavorAvai1able(flawor)
String text = (tring) clipboard.getData(flavor);

程序清单7-17展示了如何在-一个java应用和系统剪贴板之间进行剪切和粘贴操作。如果你选择文本区域中的一块文本区域,并且点击Copy,那么选中的文本就会被拷贝到系统剪贴板中,然后可以将其粘贴到任何文本编辑器中(参见图7-40)。反之,当从文本编辑器中拷贝文本时,也可以将其粘贴到我们的示例程序中。

新梦想IT职业教育

新梦想IT职业教育新梦想IT职业教育新梦想IT职业教育

AN java. awt.Toolkit 1.0

●C11pboard getSystemC11 pboard() 1.1

获取系统剪贴板。

API java.awt.datatransfer.Clipboard 1.1

●TRansferable getContents (object requester )

获取剪贴板中的内容。

参数: requester

请求剪贴板内容的对象;该值实际上并不使用

●void setContents( Transferable contents, C1 i pboardOwner owner )

将内容放人剪贴板中。

参数: contents

封装了内容的Transferable .

owner

当新的信息被放人剪贴板上时,要通知的对象(通过调用

1ostOwnership方法)。如果不需要通知,则值为nu11

●boolean 1 sDataFlavorAvai1ab1e(DataFlavor flavor) 5.0

如果该剪贴板中有给定风格的数据,那么返回true。

●object getData(DataFlavor flavor) 5.0

获取给定风格的数据,如果给定风格的数据不存在,则抛出UnsupportedF lavor- -

Exception异常。

AMI java.awt.datatransfer. ClipboardOwner 1.1

●void 1ostownership(Clipboard c11 pboard,Transferable contents )

通知该对象,它已经不再是该剪贴板内容的所有者。

参数: clipboard

已放置内容的剪贴板

contents

该所有者放人剪贴板上的内容

AN java.awt. datatransfer. Transferable 1.1

●boolean 1 sDataFlavorSupported(DataFlavor flavor)

如果给定的风格是所支持的数据风格中的一种,则返回true,否则返回false。

●object getTransferData(DataFlavor f1avor )

返回用所请求风格格式化的数据。如果不支持所请求的风格,则抛出一个Unsupported-F1avorException异常。

7.13.3 Transferable 接口和数据风格

DataFlavor是由下面两个特性来定义的:

●MIME类型的名字(比如"image/gif")。

●用于访问数据的表示类(比如java . awt . Image)。.

此外,每一种数据风格都有- -个适合人类阅读的名字(比如"GIF Image" )。

表示类可以用MIME类型的class参数设定,例如,

iag:/fisssaa.a. Image

注意:这只是一个说明其语法的例子。 对于传递GIF图像数据,并没有一个标准的数据风格。

如果没有给定任何class参数,那么表示类就是Inputstream。

为了传递本地的、序列化的和远程的Java对象,人们定义了如下三个MIME类型:

apaitain/-j-a-1ca-ojectref
application/x-java-serialized-object
application/x-jawa-remote-object

口注意: x-前缀表示这是一个试用名,并不是IANA批准的名字,IANA 是负责分配标准的MIME类型名的机构。

例如,标准的stringF 1 avor数据风格是由下面这个MIME类型描述的:

ptrtiai/-vsa-e-azi-oec-clas=java.iang .String

可以让剪贴板列出所有可用的风格:

DataFlavorD flavors = clipboard.getAvaiableDataFlavorsO

也可以在剪贴板.上安装- -个FlavorListener,当剪贴板上的数据风格集合产生变化时,可以通知风格监听器。细节请参阅API注释。

API java.awt.datatransfer.DataFlavor 1.1

●DataFlavor(String mimeType, Str ing humanPresentabl eName)

创建--个数据风格,它描述了--个流数据,该流数据的格式是由-一个MIME类型所描述的。

参数: mimeType

一个MIME类型字符串

humanPresentableName一 个更 易于阅读的名字版本

●DataFlavor(C1ass class, String humanPresentabl eName )

创建一个用来描述Java平台类的数据风格。它的MIME类型是application/x-java-serialized- - object ;c1ass=c1 assName。

参数: class

从Transferable检索到的类

humanPresentableName - 个可阅读的名字版本

●String getMimeType( )

返回该数据风格的MIME类型字符串。

●boolean isMimeTypeEqual(String mimeType)

测试该数据风格是否有给定的MIME类型。

●String getHumanPresentabl eName( )

为该数据风格的数据格式返回人们容易阅读的名字。

●C1ass getRepresentationC1ass( )

返回一个C1ass对象,它代表用该数据风格调用Transferable时返回的对象的类。

它可以是MIME类型的class参数,也可以是InputStream。

API java awt.datatransfer.Clipboard 1.1

●DataFlavor[] getAvai 1ab1eDataFlavors() 5.0 .

返回一个可用风格的数组。

●void addF 1 avorLi stener(FlavorListener listener) 5.0

添加一-个监听器,当可用的风格发生改变时,会通知该监听器。

API java.awt.datatransfer. Transferable 1.1

●DataFlavor[] getTransferDataF 1avors( )

返回一个所支持风格的数组。

API java.awt.datatransfer.FlavorListener 5.0

●void flavorsChanged(F 1 avorEvent event )

当一个剪贴板中可用的风格集发生变化时,就调用该方法。


相关内容

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~