DataFlavors antara 2 JTrees (Java)

Adakah yang bisa membantu saya mengizinkan DataFlavor dari satu pohon ke pohon lainnya? Saya telah mengikuti beberapa tutorial, dan memiliki drag and drop yang berfungsi di dalam dua pohon, namun saya ingin dapat menyeret di antara keduanya.

Ini adalah bagian yang memberikan pengecualian, dalam metode importData saya yang diganti;

try {  
        Transferable t = support.getTransferable();  
        nodes = (MyNode[])t.getTransferData(nodesFlavor);  
} catch(UnsupportedFlavorException ufe) {  
        System.out.println("UnsupportedFlavor: " + ufe.getMessage());  
} catch(java.io.IOException ioe) {  
        System.out.println("I/O error: " + ioe.getMessage());  
}

Pengecualian yang diberikan adalah;

Rasa Tidak Didukung: application/x-java-jvm-local-objectref

Bantuan apa pun akan sangat dihargai.

Bersulang,

Shaun


person Intern87    schedule 03.08.2011    source sumber
comment
Bisakah Anda memodifikasi kode sehingga menghasilkan jejak tumpukan di UnsupportedFlavorException dan memposting jejaknya?   -  person AngerClown    schedule 06.08.2011


Jawaban (1)


Anda perlu menerapkan TransferHandler khusus. Dari tutorial java,

Daftar, tabel, dan pohon tidak mendukung penurunan secara default. Alasannya adalah tidak ada cara serba guna untuk menangani drop pada komponen ini. ... Meskipun Swing tidak dapat menyediakan implementasi default untuk komponen-komponen ini, kerangka kerja untuk drop ada di sana. Anda hanya perlu menyediakan TransferHandler khusus yang mengelola impor data sebenarnya."

Jika Anda hanya mengekspor nama node pohon sebagai string, ini akan cukup mudah. Lihat tutorial selanjutnya untuk informasi tentang cara melakukan ini. Jika Anda mencoba mengekspor suatu objek, Anda juga perlu membuat implementasi Transferable Anda sendiri.

person AngerClown    schedule 03.08.2011
comment
Saya memiliki kelas TransferHandler sendiri, dan drag and drop berfungsi dengan baik di setiap pohon. Masalahnya muncul ketika saya mencoba menyeret sebuah simpul dari satu pohon ke pohon lainnya. Ragam data tidak dimasukkan, meskipun keduanya merupakan instance berbeda dari kelas yang sama. - person Intern87; 05.08.2011