Spec-Zone .ru
спецификации, руководства, описания, API
След: Создание GUI С JFC/Swing
Урок: Перетащите и Отбросьте и Передача данных
Используя и Создание DataFlavor
Домашняя страница > Создание GUI С JFC/Swing > Перетащите и Отбросьте и Передача данных

Используя и Создание DataFlavor

DataFlavor class позволяет Вам определять тип контента своих данных. Вы должны определить a DataFlavor выбирая данные от importData метод. Несколько типов разновидности предопределяются для Вас:

Для большинства приложений это - все, что Вы должны знать о разновидностях данных. Однако, если Вы требуете разновидности кроме этих предварительно определенных типов, можно создать свое собственное. Если Вы будете создавать пользовательский компонент и будете хотеть, чтобы он участвовал в передаче данных, то Вы должны будете создать пользовательскую разновидность данных. Конструктор для того, чтобы определить разновидность данных 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) конструктор. Например, чтобы определить разновидность данных, которая передает цвет от 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 getTransferDataFlavors метод, разновидности должны быть вставлены в привилегированный порядок с самым привилегированным появлением в элементе 0 из массива. Genereally привилегированный порядок от самого богатого, или самым сложным, форма данных вниз к simpleset — форма наиболее вероятно, чтобы быть понятым под другими объектами.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: CCP в F нетекстовом Компоненте
Следующая страница: Соединение всего этого - DnD и CCP