Spec-Zone .ru
спецификации, руководства, описания, API
|
DataFlavor
class позволяет Вам определять тип контента своих данных. Вы должны определить a DataFlavor
выбирая данные от importData
метод. Несколько типов разновидности предопределяются для Вас:
imageFlavor
java.awt.Image
формат. Это используется, перетаскивая данные изображения.stringFlavor
java.lang.String
. Это - обычно используемая разновидность данных для большинства приложений.javaFileListFlavor
java.io.File
объекты в a java.util.List
формат. Это полезно для приложений, которые перетаскивают файлы, такой как TopLevelTransferHandler
пример, обсужденный в Для большинства приложений это - все, что Вы должны знать о разновидностях данных. Однако, если Вы требуете разновидности кроме этих предварительно определенных типов, можно создать свое собственное. Если Вы будете создавать пользовательский компонент и будете хотеть, чтобы он участвовал в передаче данных, то Вы должны будете создать пользовательскую разновидность данных. Конструктор для того, чтобы определить разновидность данных DataFlavor(Class, String)
. Например, чтобы создать разновидность данных для java.util.ArrayList
class:
new DataFlavor(ArrayList.class, "ArrayList");
Создать разновидность данных для целочисленного массива:
new DataFlavor(int[].class, "Integer Array");
Передача данных, используя этот механизм использование Object
сериализация, таким образом, class Вы используете, чтобы передать данные, должна реализовать Serializable
интерфейс, как должен что-либо, что сериализируется с ним. Если все не будет сериализуемо, то Вы будете видеть a NotSerializableException
во время отбрасывания или копии к буферу обмена.
Создание разновидности данных, используя DataFlavor(Class, String)
конструктор позволяет Вам передавать данные между приложениями, включая собственные приложения. Если Вы хотите создать разновидность данных, которая передает данные только в пределах приложения, использовать javaJVMLocalObjectMimeType
DataFlavor(String)
JColorChooser
только в пределах Вашего приложения, Вы могли использовать этот код:
String colorType = DataFlavor.javaJVMLocalObjectMimeType + ";class=java.awt.Color"; DataFlavor colorFlavor = new DataFlavor(colorType);
Создать разновидность данных для ArrayList
это работало бы только в пределах Вашего приложения:
new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType + ";class=java.util.ArrayList");
Создать разновидность данных для целочисленного массива:
new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType + ";class=\"" + int[].class.getName() + "\"");
Тип MIME, содержащий специальные символы, такой как [или; должны были включить те символы в кавычки.
A Transferable
может быть реализован, чтобы поддерживать многократные разновидности. Например, можно использовать и локальные разновидности и разновидности сериализации вместе, или можно использовать две формы тех же самых данных, такой как ArrayList
и целое число выстраивает разновидности, вместе, или можно создать a TransferHandler
это принимает различные типы данных, такие как цвет и текст.
Когда Вы создаете массив DataFlavors
быть возвращенным из Transferable
's getTransferDataFlavors