2009-02-23 80 views
1

我想在同一個JVM中的兩個組件之間實現拖放操作。我傳遞了一個不可序列化的對象數組,所以我試圖找到傳入的javaJVMLocalObjectMimeType的正確咒語。但是,我不斷收到非法參數異常。構造一個DataFlavor用於拖放一個java對象數組

作爲一個例子,如果我有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

唉!拖動&落在揮杆中是如此完整的混亂!

+0

這兩個代碼示例有什麼區別? – 2009-02-23 18:45:47

+0

我的歉意,那是一個複製和粘貼錯誤。第二個例子應該引用一個非常類似於ExampleClass的數組。現在已修復... – 2009-02-23 19:10:00

回答

2

嘗試這種情況:

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

由於陣列的名稱(例如,「[Ljava.lang.Object;」)具有特殊字符,則必須引用「級」參數。

相關問題