java.lang.Objectjava.awt.datatransfer.DataFlavor
All Implemented Interfaces:
Cloneable, Externalizable
An instance of {@code DataFlavor} encapsulates a content type as defined in RFC 2045 and RFC 2046. A content type is typically referred to as a MIME type.
A content type consists of a media type (referred to as the primary type), a subtype, and optional parameters. See RFC 2045 for details on the syntax of a MIME type.
The JRE data transfer implementation interprets the parameter "class"
of a MIME type as a representation class.
The representation class reflects the class of the object being
transferred. In other words, the representation class is the type of
object returned by Transferable#getTransferData .
For example, the MIME type of #imageFlavor is
{@code "image/x-java-image;class=java.awt.Image"},
the primary type is {@code image}, the subtype is
{@code x-java-image}, and the representation class is
{@code java.awt.Image}. When {@code getTransferData} is invoked
with a {@code DataFlavor} of {@code imageFlavor}, an instance of
{@code java.awt.Image} is returned.
It's important to note that {@code DataFlavor} does no error checking
against the representation class. It is up to consumers of
{@code DataFlavor}, such as {@code Transferable}, to honor the representation
class.
Note, if you do not specify a representation class when
creating a {@code DataFlavor}, the default
representation class is used. See appropriate documentation for
{@code DataFlavor}'s constructors.
Also, {@code DataFlavor} instances with the "text" primary MIME type may have a "charset" parameter. Refer to RFC 2046 and #selectBestTextFlavor for details on "text" MIME types and the "charset" parameter.
Equality of {@code DataFlavors} is determined by the primary type, subtype, and representation class. Refer to #equals(DataFlavor) for details. When determining equality, any optional parameters are ignored. For example, the following produces two {@code DataFlavors} that are considered identical:
DataFlavor flavor1 = new DataFlavor(Object.class, "X-test/test; class=<java.lang.Object>; foo=bar"); DataFlavor flavor2 = new DataFlavor(Object.class, "X-test/test; class=<java.lang.Object>; x=y"); // The following returns true. flavor1.equals(flavor2);As mentioned, {@code flavor1} and {@code flavor2} are considered identical. As such, asking a {@code Transferable} for either {@code DataFlavor} returns the same results.
For more information on the using data transfer with Swing see the How to Use Drag and Drop and Data Transfer, section in Java Tutorial.
Blake
- SullivanLaurence
- P. G. CableJeff
- DunnNested Class Summary: | ||
---|---|---|
static class | DataFlavor.TextFlavorComparator |
Field Summary | ||
---|---|---|
public static final DataFlavor | stringFlavor | The DataFlavor representing a Java Unicode String class,
where:
representationClass = java.lang.String mimeType = "application/x-java-serialized-object" |
public static final DataFlavor | imageFlavor | The DataFlavor representing a Java Image class,
where:
representationClass = java.awt.Image mimeType = "image/x-java-image" |
public static final DataFlavor | plainTextFlavor | The DataFlavor representing plain text with Unicode
encoding, where:
representationClass = InputStream mimeType = "text/plain; charset=unicode"This DataFlavor has been deprecated because
(1) Its representation is an InputStream, an 8-bit based representation,
while Unicode is a 16-bit character set; and (2) The charset "unicode"
is not well-defined. "unicode" implies a particular platform's
implementation of Unicode, not a cross-platform implementation. |
public static final String | javaSerializedObjectMimeType | A MIME Content-Type of application/x-java-serialized-object represents
a graph of Java object(s) that have been made persistent.
The representation class associated with this DataFlavor
identifies the Java type of an object returned as a reference
from an invocation java.awt.datatransfer.getTransferData . |
public static final DataFlavor | javaFileListFlavor | To transfer a list of files to/from Java (and the underlying
platform) a DataFlavor of this type/subtype and
representation class of java.util.List is used.
Each element of the list is required/guaranteed to be of type
java.io.File . |
public static final String | javaJVMLocalObjectMimeType | To transfer a reference to an arbitrary Java object reference that
has no associated MIME Content-type, across a Transferable
interface WITHIN THE SAME JVM, a DataFlavor
with this type/subtype is used, with a representationClass
equal to the type of the class/interface being passed across the
Transferable .
The object reference returned from
|
public static final String | javaRemoteObjectMimeType | In order to pass a live link to a Remote object via a Drag and Drop
ACTION_LINK operation a Mime Content Type of
application/x-java-remote-object should be used,
where the representation class of the DataFlavor
represents the type of the Remote interface to be
transferred. |
transient int | atom | |
MimeType | mimeType |
Constructor: |
---|
DataFlavor . This constructor is
provided only for the purpose of supporting the
Externalizable interface. It is not
intended for public (client) use.
|
DataFlavor from a mimeType string.
The string can specify a "class=DataFlavor with the desired
representation class. If the string does not contain "class=" parameter,
java.io.InputStream is used as default.
|
DataFlavor that represents a Java class.
The returned representationClass = representationClass mimeType = application/x-java-serialized-object
|
DataFlavor that represents a
MimeType .
The returned
If the Otherwise: representationClass = InputStream mimeType = mimeType
|
DataFlavor that represents a
MimeType .
The returned
If the mimeType is
"application/x-java-serialized-object; class=<representation class>",
the result is the same as calling
Otherwise: representationClass = InputStream mimeType = mimeType
|
Methods from java.lang.Object: |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Method from java.awt.datatransfer.DataFlavor Detail: |
---|
DataFlavor . |
The equals comparison for the {@code DataFlavor} class is implemented
as follows: Two |
|
Deprecated! As - inconsistent with hashCode() contract,
use isMimeTypeEqual(String) instead.
mimeType against the passed in
String and representationClass is
not considered in the comparison.
If representationClass needs to be compared, then
equals(new DataFlavor(s)) may be used. |
|
|
DataFlavor represents. This name would be localized
for different countries. |
DataFlavor . |
DataFlavor
if paramName equals "humanPresentableName". Otherwise
returns the MIME type value associated with paramName . |
DataFlavor . |
java.io.Reader , java.lang.String ,
java.nio.CharBuffer , [C ,
java.io.InputStream , java.nio.ByteBuffer ,
and [B .
Because text flavors which do not support the charset parameter are
encoded in a non-standard format, this method should not be called for
such flavors. However, in order to maintain backward-compatibility,
if this method is called for such a flavor, this method will treat the
flavor as though it supports the charset parameter and attempt to
decode it accordingly. See |
Class which objects supporting this
DataFlavor will return when this DataFlavor
is requested. |
DataFlavor . |
DataFlavor representing plain text with Unicode
encoding, where:
representationClass = java.io.InputStream mimeType = "text/plain; charset=<platform default Unicode encoding>"Sun's implementation for Microsoft Windows uses the encoding utf-16le .
Sun's implementation for Solaris and Linux uses the encoding
iso-10646-ucs-2 . |
DataFlavor .
For two equal DataFlavor s, hash codes are equal.
For the String
that matches DataFlavor.equals(String) , it is not
guaranteed that DataFlavor 's hash code is equal
to the hash code of the String . |
DataFlavor specified represents
a list of file objects. |
DataFlavor specified represents
a remote object. |
DataFlavor specified represents
a serialized object. |
DataFlavor is a valid text flavor for
this implementation of the Java platform. Only flavors equivalent to
DataFlavor.stringFlavor and DataFlavor s with
a primary MIME type of "text" can be valid text flavors.
If this flavor supports the charset parameter, it must be equivalent to
If this flavor does not support the charset parameter, its
representation must be
See |
DataFlavor .
Parameters are not included in the comparison. |
mimeType of two DataFlavor
objects. No parameters are considered. |
DataFlavor represent a serialized object? |
DataFlavor is java.nio.ByteBuffer or a
subclass thereof. |
DataFlavor is java.nio.CharBuffer or a
subclass thereof. |
DataFlavor represent a
java.io.InputStream ? |
DataFlavor is java.io.Reader or a subclass
thereof. |
Remote . |
|
|
Deprecated!
DataFlavor subtypes
the opportunity to change how the normalization of MIME types is
accomplished. One possible use would be to add default
parameter/value pairs in cases where none are present in the MIME
type string passed in.
This method is never invoked by this implementation from 1.1 onwards. |
Deprecated!
DataFlavor for every MIME Type parameter
to allow DataFlavor subclasses to handle special
parameters like the text/plain charset
parameters, whose values are case insensitive. (MIME type parameter
values are supposed to be case sensitive.
This method is called for each parameter name/value pair and should
return the normalized representation of the |
DataFlavor from a Serialized state. |
DataFlavor from an array of
DataFlavor s. Only DataFlavor.stringFlavor , and
equivalent flavors, and flavors that have a primary MIME type of "text",
are considered for selection.
Flavors are first sorted by their MIME types in the following order: For example, "text/sgml" will be selected over
"text/html", and If two or more flavors share the best MIME type in the array, then that MIME type will be checked to see if it supports the charset parameter. The following MIME types support, or are treated as though they support, the charset parameter: DataFlavor which uses that MIME type. If so, the JRE
will assume from that point on that the MIME type supports the charset
parameter and will not check again. If the parameter is not explicitly
listed, the JRE will assume from that point on that the MIME type does
not support the charset parameter and will not check again. Because
this check is performed on an arbitrarily chosen
DataFlavor , developers must ensure that all
DataFlavor s with a "text/<other>" MIME type specify
the charset parameter if it is supported by that MIME type. Developers
should never rely on the JRE to substitute the platform's default
charset for a "text/<other>" DataFlavor. Failure to adhere to this
restriction will lead to undefined behavior.
If the best MIME type in the array does not support the charset
parameter, the flavors which share that MIME type will then be sorted by
their representation classes in the following order:
If two or more flavors share the best representation class, or if no flavor has one of the three specified representations, then one of those flavors will be chosen non-deterministically.
If the best MIME type in the array does support the charset parameter,
the flavors which share that MIME type will then be sorted by their
representation classes in the following order:
If two or more flavors share the best representation class, and that representation is one of the four explicitly listed, then one of those flavors will be chosen non-deterministically. If, however, no flavor has one of the four specified representations, the flavors will then be sorted by their charsets. Unicode charsets, such as "UTF-16", "UTF-8", "UTF-16BE", "UTF-16LE", and their aliases, are considered best. After them, the platform default charset and its aliases are selected. "US-ASCII" and its aliases are worst. All other charsets are chosen in alphabetical order, but only charsets supported by this implementation of the Java platform will be considered.
If two or more flavors share the best charset, the flavors will then
again be sorted by their representation classes in the following order:
If two or more flavors share the best representation class, or if no flavor has one of the three specified representations, then one of those flavors will be chosen non-deterministically. |
DataFlavor represents. This name would be localized
for different countries. |
DataFlavor and its
parameters. The resulting String contains the name of
the DataFlavor class, this flavor's MIME type, and its
representation class. If this flavor has a primary MIME type of "text",
supports the charset parameter, and has an encoded representation, the
flavor's charset is also included. See selectBestTextFlavor
for a list of text flavors which support the charset parameter. |
|
DataFlavor . |