构建用于拖放java对象数组的DataFlavor

构建用于拖放java对象数组的DataFlavor,java,swing,drag-and-drop,Java,Swing,Drag And Drop,我想在同一JVM中的两个组件之间实现拖放。我正在传递一个不可序列化的对象数组,因此我试图找到要传入的javaJVMLocalObjectMimeType的正确咒语。然而,我不断得到一个非法的参数异常 例如,如果我有ExampleClass 附加类参数可以: new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType+";class="+ExampleClass.class.getName()); 但使用数组类型失败: new Dat

我想在同一JVM中的两个组件之间实现拖放。我正在传递一个不可序列化的对象数组,因此我试图找到要传入的javaJVMLocalObjectMimeType的正确咒语。然而,我不断得到一个非法的参数异常

例如,如果我有ExampleClass

附加类参数可以:

    new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType+";class="+ExampleClass.class.getName());
但使用数组类型失败:

    new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType+";class="+ExampleClass[].class.getName());
它抛出:

java.lang.IllegalArgumentException:未能解析:application/x-java-jvm-local-objectref;class=[LExampleClass

啊!swing中的拖放操作真是一团糟!

试试这个:

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

由于数组的名称(例如“[Ljava.lang.Object;””)具有特殊字符,因此必须引用“类”参数。

这两个代码示例之间有什么区别?很抱歉,这是一个复制粘贴错误。第二个示例应该引用一个非常类似ExampleClass的数组。现在已修复…c&p错误没有进入您的代码中吗?您能提供“未能解析…”消息的其余部分吗?不,它没有…新的DataFlavor(DataFlavor.javaJVMLocalObjectMimeType+”;class=“+ExampleClass[].class.getName());抛出java.lang.IllegalArgumentException:未能解析:应用程序/x-java-jvm-local-objectref;class=[LExampleClass;