【问题标题】:DataFlavors between 2 JTrees (Java)2 个 JTree (Java) 之间的 DataFlavors
【发布时间】:2011-08-03 10:58:15
【问题描述】:

谁能帮我让 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());  
}

抛出的异常是;

UnsupportedFlavor: application/x-java-jvm-local-objectref

任何帮助将不胜感激。

干杯,

肖恩

【问题讨论】:

  • 您能否修改代码,使其在UnsupportedFlavorException 上输出堆栈跟踪并发布跟踪?

标签: java swing drag-and-drop jtree


【解决方案1】:

您需要实现自定义TransferHandler。来自the java tutorial

List、table 和 tree 默认不支持 drop。的原因 这是因为没有万能的方法来处理这些下降 成分。 ...虽然 Swing 不能提供默认实现 对于这些组件,drop 的框架就在那里。你只需要 提供一个管理实际导入的自定义 TransferHandler 数据。”

如果您只是将树节点的名称导出为字符串,这应该很容易。有关如何执行此操作的信息,请参阅该教程的其余部分。如果您尝试导出对象,则还需要创建自己的 Transferable 实现。

【讨论】:

  • 我有自己的 TransferHandler 类,并且拖放在每棵树中都可以正常工作。当我尝试将节点从一棵树拖到另一棵树时,问题就来了。数据风格不是预设的,即使它们都是同一类的不同实例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-05
  • 2013-04-10
  • 2012-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多