【发布时间】:2012-11-05 06:06:36
【问题描述】:
我注意到在 jTree 中调用 & 定义的 jTree.treeModelHandler 为 treeNodesChanged 和 treeNodesInserted 事件实现了空白方法。 DefaultTreeModel 会触发一个 treeNodesInserted 事件,并且 jTree 会自行更新。但是,当我从 TreeModel 触发相同的事件时,什么也没有发生。
当树没有实现任何明显的方法时,我无法确定树如何从 DefaultTreeModel 更新。
我在这里错过了什么?
更新:解决方法 org.jdesktop.swingx.tree.TreeModelSupport。很棒的套件!添加为我的 TreeModel 接口对象的字段。然后将所有触发和 treeModelListener 方法委托给它。使用 JTree 比使用 DefaultTreeModel 效果更好,甚至使用 JXTree 效果更好。我只实现了单数选择/插入/删除,但到目前为止,树在所有测试中都表现正确。
【问题讨论】:
-
为了获得更好的帮助,请尽快发布SSCCE 演示的问题,简短、可运行、可编译,可以基于
Oracle关于XxxTreeListener的教程,我认为这个问题在此无法回答形式 -
+1 用于解决 TreeModelSupport (偏向于我 :-) 顺便说一句:树将所有模型视为相同并正确更新自身,前提是它们正确触发事件(这不是微不足道的)。 “主”监听在 ui-delegate 中处理,JTree 本身的处理程序只是一个小调整
标签: java swing jtree event-listener treemodel