构造一个DataFlavor,用于拖放java对象数组

时间:2009-02-23 18:42:35

标签: java swing drag-and-drop

我想在同一个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

AARGH!在挥杆中拖拽是如此彻底的混乱!

1 个答案:

答案 0 :(得分:2)

试试这个:

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

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