java.awt.datatransfer

接口
异常
java.lang.Object
  继承者 java.awt.datatransfer.SystemFlavorMap
所有已实现的接口:
FlavorMap, FlavorTable

public final class SystemFlavorMap
     
extends Object
implements FlavorMap, FlavorTable

SystemFlavorMap 是 "native" (String)(对应于特定于平台的数据格式)和 "flavor" (DataFlavor)(对应于与平台无关的 MIME 类型)之间的可配置映射。数据传输子系统使用此映射在 Java 和本机应用程序之间传输数据,以及在独立的 VM 中的 Java 应用程序之间传输数据。

在 Sun 参考实现中,默认的 SystemFlavorMap 是通过文件 jre/lib/flavormap.properties 和 AWT 属性 AWT.DnD.flavorMapFileURL 所引用的 URL 的内容初始化的。有关详细信息,请参阅 flavormap.properties

从以下版本开始:
1.2

方法摘要
 void addFlavorForUnencodedNative(String nat, DataFlavor flav)
          添加从单个 String native 到单个 DataFlavor 的映射。
 void addUnencodedNativeForFlavor(DataFlavor flav, String nat)
          添加从指定的 DataFlavor(和等于指定 DataFlavor 的所有 DataFlavor)到指定 String native 的映射。
static DataFlavor decodeDataFlavor(String nat)
          解码 String native 以用作 DataFlavor
static String decodeJavaMIMEType(String nat)
          解码 String native 以用作 Java MIME 类型。
static String encodeDataFlavor(DataFlavor flav)
          编码 DataFlavor 以用作 String native。
static String encodeJavaMIMEType(String mimeType)
          编码 MIME 类型以用作 String native。
static FlavorMap getDefaultFlavorMap()
          返回此线程的 ClassLoader 的默认 FlavorMap。
 List<DataFlavor> getFlavorsForNative(String nat)
          返回数据传输子系统可以将指定 String native 转换成的 DataFlavorList
 Map<String,DataFlavor> getFlavorsForNatives(String[] natives)
          返回指定 String native 到其大多数首选 DataFlavorMap
 List<String> getNativesForFlavor(DataFlavor flav)
          返回数据传输子系统可以将指定 DataFlavor 转换成的 String native 的 List
 Map<DataFlavor,String> getNativesForFlavors(DataFlavor[] flavors)
          返回指定 DataFlavor 到其大多数首选的 String native 的 Map
static boolean isJavaMIMEType(String str)
          返回指定的 String 是否为编码的 Java MIME 类型。
 void setFlavorsForNative(String nat, DataFlavor[] flavors)
          放弃指定 String native 的当前映射,而创建指定 DataFlavor 的新映射。
 void setNativesForFlavor(DataFlavor flav, String[] natives)
          放弃指定 DataFlavor 和等于指定 DataFlavor 的所有 DataFlavor 的当前映射,并创建到指定 String native 的新映射。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法详细信息

getDefaultFlavorMap

public static FlavorMap getDefaultFlavorMap()
返回此线程的 ClassLoader 的默认 FlavorMap。


getNativesForFlavor

public List<String> getNativesForFlavor(DataFlavor flav)
返回数据传输子系统可以将指定 DataFlavor 转换成的 String native 的 List。该 List 的排序方式是从最好的 native 到最差的 native。即第一个 native 最能将指定 flavor 的数据反映到底层的本机平台。

如果指定的 DataFlavor 以前对于数据传输子系统而言是未知的,并且数据传输子系统未能将此 DataFlavor 转换为任何现有的 native,则调用此方法将在指定的 DataFlavor 和其 MIME 类型的编码版本之间建立一个双向映射,作为其 native。

指定者:
接口 FlavorTable 中的 getNativesForFlavor
参数:
flav - 应该返回其对应 native 的 DataFlavor。如果指定 null,则数据传输子系统当前已知的所有 native 都将以不确定的顺序返回。
返回:
java.lang.String 对象的 java.util.List,这些对象是特定于平台的数据格式的特定于平台的表示形式
从以下版本开始:
1.4
另请参见:
encodeDataFlavor(java.awt.datatransfer.DataFlavor)

getFlavorsForNative

public List<DataFlavor> getFlavorsForNative(String nat)
返回数据传输子系统可以将指定 String native 转换成的 DataFlavorList。该 List 的排序方式是从最好的 DataFlavor 到最差的 DataFlavor。即第一个 DataFlavor 最能将指定 native 中的数据反映到 Java 应用程序。

如果指定的 native 以前对于数据传输子系统而言是未知的,并且该 native 编码正确,则调用此方法将在指定的 native 和 DataFlavor(其 MIME 类型为 native 的解码版本)之间建立一个双向映射。

如果指定的 native 不是正确编码的 native,并且此 native 的映射关系没有使用 setFlavorsForNative 进行修改,则 List 的内容是与平台有关的,但是并不能返回 null

指定者:
接口 FlavorTable 中的 getFlavorsForNative
参数:
nat - 应该返回其对应 DataFlavor 的 native。如果指定 null,则数据传输子系统当前已知的所有 DataFlavor 都将以不确定的顺序返回。
返回:
DataFlavor 对象的 java.util.List,可以将特定于平台的指定 native 中特定于平台的数据转换为这些对象。
从以下版本开始:
1.4
另请参见:
encodeJavaMIMEType(java.lang.String)

getNativesForFlavors

public Map<DataFlavor,String> getNativesForFlavors(DataFlavor[] flavors)
返回指定 DataFlavor 到其大多数首选的 String native 的 Map。每一个 native 值都将与指定 flavor 的 getNativesForFlavor 所返回 List 中的第一个 native 相同。

如果指定的 DataFlavor 以前对于数据传输子系统是未知的,那么调用此方法将在指定的 DataFlavor 和其 MIME 类型的编码版本之间建立一个双向映射,作为其 native。

指定者:
接口 FlavorMap 中的 getNativesForFlavors
参数:
flavors - 一组 DataFlavor,它们是返回 Map 的键集。如果指定了 null,则返回对数据传输子系统已知的所有 DataFlavor 到其大多数首选 String native 的映射。
返回:
DataFlavorString native 的 java.util.Map
另请参见:
getNativesForFlavor(java.awt.datatransfer.DataFlavor), encodeDataFlavor(java.awt.datatransfer.DataFlavor)

getFlavorsForNatives

public Map<String,DataFlavor> getFlavorsForNatives(String[] natives)
返回指定 String native 到其大多数首选 DataFlavorMap。每一个 DataFlavor 值都将与指定 native 的 getFlavorsForNative 所返回 List 中的第一个 DataFlavor 相同。

如果指定的 native 以前对于数据传输子系统而言是未知的,并且该 native 编码正确,则调用此方法将在指定的 native 和 DataFlavor(其 MIME 类型为 native 的解码版本)之间建立一个双向映射。

指定者:
接口 FlavorMap 中的 getFlavorsForNatives
参数:
native - 一组 String,它们是返回 Map 的键集。如果指定了 null,则返回所有受支持 String native 到其大多数首选 DataFlavor 的映射。
返回:
String native 到 DataFlavorjava.util.Map
另请参见:
getFlavorsForNative(java.lang.String), encodeJavaMIMEType(java.lang.String)

addUnencodedNativeForFlavor

public void addUnencodedNativeForFlavor(DataFlavor flav,
                                        String nat)
添加从指定的 DataFlavor(和等于指定 DataFlavor 的所有 DataFlavor)到指定 String native 的映射。与 getNativesForFlavor 不同,该映射仅是单向建立的,并且不对 native 进行编码。要建立双向映射,请同时调用 addFlavorForUnencodedNative。新的映射优先级低于现有映射。如果从指定或相等 DataFlavor 到指定 String native 的映射已经存在,则此方法无效。

参数:
flav - 该映射的 DataFlavor
nat - 该映射的 String native 值
抛出:
NullPointerException - 如果 flav 或 nat 为 null
从以下版本开始:
1.4
另请参见:
addFlavorForUnencodedNative(java.lang.String, java.awt.datatransfer.DataFlavor)

setNativesForFlavor

public void setNativesForFlavor(DataFlavor flav,
                                String[] natives)
放弃指定 DataFlavor 和等于指定 DataFlavor 的所有 DataFlavor 的当前映射,并创建到指定 String native 的新映射。与 getNativesForFlavor 不同,这些映射仅是单向建立的,并且不对 native 进行编码。要建立双向映射,请同时调用 setFlavorsForNative。数组中的第一个 native 表示最高优先级的映射。后续 native 所表示的映射的优先级是递减的。

如果数组包含多个引用相等 String native 的元素,则此方法将为其中第一个元素建立新映射,而忽略其余的元素。

建议客户机代码不要重置数据传输子系统建立的映射。此方法仅用于应用程序级的映射。

参数:
flav - 该映射的 DataFlavor
natives - 该映射的 String native 值
抛出:
NullPointerException - 如果 flav 或 native 为 null 或者 native 包含 null 元素
从以下版本开始:
1.4
另请参见:
setFlavorsForNative(java.lang.String, java.awt.datatransfer.DataFlavor[])

addFlavorForUnencodedNative

public void addFlavorForUnencodedNative(String nat,
                                        DataFlavor flav)
添加从单个 String native 到单个 DataFlavor 的映射。与 getFlavorsForNative 不同,该映射仅是单向建立的,并且不对 native 进行编码。要建立双向映射,请同时调用 addUnencodedNativeForFlavor。新的映射优先级低于现有映射。如果从指定 String native 到指定或相等 DataFlavor 的映射已经存在,则此方法无效。

参数:
nat - 该映射的 String native 键
flav - 该映射的 DataFlavor
抛出:
NullPointerException - 如果 nat 或 flav 为 null
从以下版本开始:
1.4
另请参见:
addUnencodedNativeForFlavor(java.awt.datatransfer.DataFlavor, java.lang.String)

setFlavorsForNative

public void setFlavorsForNative(String nat,
                                DataFlavor[] flavors)
放弃指定 String native 的当前映射,而创建指定 DataFlavor 的新映射。与 getFlavorsForNative 不同,这些映射将仅是单向建立的,并且不需要对 native 进行编码。要建立双向映射,请同时调用 setNativesForFlavor。数组中的第一个 DataFlavor 表示最高优先级的映射。后续 DataFlavor 所表示的映射的优先级是递减的。

如果数组包含多个引用相等 DataFlavor 的元素,则为其中的第一个元素建立新映射,而忽略其余的元素。

建议客户机代码不要重置数据传输子系统建立的映射。此方法仅用于应用程序级的映射。

参数:
nat - 映射的 String native 键
flavor - 映射的 DataFlavor
抛出:
NullPointerException - 如果 nat 或 flavor 为 null 或者 flavor 包含 null 元素
从以下版本开始:
1.4
另请参见:
setNativesForFlavor(java.awt.datatransfer.DataFlavor, java.lang.String[])

encodeJavaMIMEType

public static String encodeJavaMIMEType(String mimeType)
编码 MIME 类型以用作 String native。MIME 类型的编码表示形式的格式是与实现有关的。仅有的限制是:
  • 当且仅当 MIME 类型 Stringnull 时,编码表示形式为 null
  • 两个非 null MIME 类型 String 的编码表示形式相等的条件是,当且仅当根据 String.equals(Object) 这些 String 相等。

Sun 对此方法的参考实现返回指定 MIME 类型 String,前缀为 JAVA_DATAFLAVOR:

参数:
mimeType - 要编码的 MIME 类型
返回:
编码的 String,如果 mimeType 为 null,则返回 null

encodeDataFlavor

public static String encodeDataFlavor(DataFlavor flav)
编码 DataFlavor 以用作 String native。编码的 DataFlavor 的格式是与实现有关的。仅有的限制是:
  • 当且仅当指定 DataFlavornull 或者其 MIME 类型 Stringnull 时,编码表示形式为 null
  • 具有非 null MIME 类型 String 的两个非 null DataFlavor 的编码表示形式相等的条件是,根据 String.equals(Object) 当且仅当这些 DataFlavor 的 MIME 类型 String 相等。

Sun 对此方法的参考实现返回前缀为 JAVA_DATAFLAVOR: 的指定 DataFlavor 的 MIME 类型 String

参数:
flav - 要编码的 DataFlavor
返回:
编码的 String,如果 flav 为 null 或者具有 null MIME 类型,则返回 null

isJavaMIMEType

public static boolean isJavaMIMEType(String str)
返回指定的 String 是否为编码的 Java MIME 类型。

参数:
str - 要测试的 String
返回:
如果对 String 进行了编码,则返回 true;否则返回 false

decodeJavaMIMEType

public static String decodeJavaMIMEType(String nat)
解码 String native 以用作 Java MIME 类型。

参数:
nat - 要解码的 String
返回:
解码的 Java MIME 类型,如果 nat 不是编码的 String native,则返回 null

decodeDataFlavor

public static DataFlavor decodeDataFlavor(String nat)
                                   throws ClassNotFoundException
解码 String native 以用作 DataFlavor

参数:
nat - 要解码的 String
返回:
解码的 DataFlavor,如果 nat 不是编码的 String native,则返回 null
抛出:
ClassNotFoundException