DataFlavors ระหว่าง 2 JTrees (Java)

ใครสามารถช่วยฉันอนุญาต DataFlavor จากทรีต้นหนึ่งไปยังอีกต้นหนึ่งได้ ฉันได้ติดตามบทช่วยสอนมาบ้างแล้ว และมีการลากและวางภายในต้นไม้ทั้งสอง แต่ฉันอยากจะลากระหว่างต้นไม้ทั้งสองได้

นี่คือส่วนที่ส่งข้อยกเว้นภายในเมธอด importData ที่ถูกแทนที่ของฉัน

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());  
}

ข้อยกเว้นที่เกิดขึ้นคือ;

ไม่รองรับรสชาติ: application/x-java-jvm-local-objectref

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก.

ไชโย

ชอน


person Intern87    schedule 03.08.2011    source แหล่งที่มา
comment
คุณสามารถแก้ไขโค้ดเพื่อให้แสดงผลการติดตามสแต็กบน UnsupportedFlavorException และโพสต์การติดตามได้หรือไม่   -  person AngerClown    schedule 06.08.2011


คำตอบ (1)


คุณต้องใช้ TransferHandler ที่กำหนดเอง จากบทช่วยสอน Java

รายการ ตาราง และแผนผังไม่รองรับการดรอปตามค่าเริ่มต้น เหตุผลก็คือไม่มีวิธีอเนกประสงค์ในการจัดการกับการลดลงของส่วนประกอบเหล่านี้ ... แม้ว่า Swing จะไม่สามารถจัดเตรียมการใช้งานเริ่มต้นสำหรับส่วนประกอบเหล่านี้ได้ แต่เฟรมเวิร์กสำหรับการดรอปก็อยู่ที่นั่น คุณต้องจัดเตรียม TransferHandler แบบกำหนดเองที่จัดการการนำเข้าข้อมูลจริงเท่านั้น"

หากคุณกำลังส่งออกเพียงชื่อของโหนดแผนผังเป็นสตริง สิ่งนี้น่าจะค่อนข้างง่าย ดูบทช่วยสอนที่เหลือสำหรับข้อมูลเกี่ยวกับวิธีการทำเช่นนี้ หากคุณกำลังพยายามส่งออกออบเจ็กต์ คุณจะต้องสร้างการใช้งาน Transferable ของคุณเองด้วย

person AngerClown    schedule 03.08.2011
comment
ฉันมีคลาส TransferHandler ของตัวเอง และการลากและวางก็ทำงานได้ดีภายในแต่ละแผนผัง ปัญหาเกิดขึ้นเมื่อฉันพยายามลากโหนดจากแผนผังหนึ่งไปยังอีกแผนผังหนึ่ง รสชาติของข้อมูลไม่ได้รับการกำหนด แม้ว่าทั้งสองอินสแตนซ์จะต่างกันในคลาสเดียวกันก็ตาม - person Intern87; 05.08.2011