|
Spec-Zone .ru
спецификации, руководства, описания, API
|
DataFlavor class позволяет Вам определять тип контента своих данных. Вы должны определить a DataFlavor выбирая данные от importData метод. Несколько типов разновидности предопределяются для Вас:
java.awt.Image формат. Это используется, перетаскивая данные изображения.java.lang.String. Это - обычно используемая разновидность данных для большинства приложений.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) конструктор позволяет Вам передавать данные между приложениями, включая собственные приложения. Если Вы хотите создать разновидность данных, которая передает данные только в пределах приложения, использовать и конструктор. Например, чтобы определить разновидность данных, которая передает цвет от a 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 метод, разновидности должны быть вставлены в привилегированный порядок с самым привилегированным появлением в элементе 0 из массива. Genereally привилегированный порядок от самого богатого, или самым сложным, форма данных вниз к simpleset — форма наиболее вероятно, чтобы быть понятым под другими объектами.