Создание DataFlavor для перетаскивания массива Java-объектов

Я хочу реализовать перетаскивание между двумя компонентами в одной JVM. Я передаю массив объектов, которые нельзя сериализовать, поэтому я пытаюсь найти правильную формулировку javaJVMLocalObjectMimeType для передачи. Однако я продолжаю получать исключение недопустимого аргумента.

Например, если у меня есть ExampleClass

Добавление параметров класса работает:

    new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType+";class="+ExampleClass.class.getName());

Но не работает с типом массива:

    new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType+";class="+ExampleClass[].class.getName());

который бросает:

java.lang.IllegalArgumentException: failed to parse:application/x-java-jvm-local-objectref;class=[LExampleClass

Ааааааааааааааааааааааа! Drag & Drop в разгаре - это полный беспорядок!

Ответов (1)

Решение

Попробуй это:

new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType +
               ";class=\""+ExampleClass.class.getName() + "\"");

Поскольку имя массива (например, «[Ljava.lang.Object;») содержит специальные символы, вы должны заключить в кавычки параметр «class».