我注意到在jTree中调用和定义的jTree.treeModelHandler为treeNodesChanged和treeNodesCreatedInsert事件实现了空白方法。DefaultTreeModel 触发一个 treeNodesInsert 事件 & jTree 会自行更新。但是,当我从树模型中触发相同的事件时,没有任何反应。
我无法弄清楚当树没有实现任何明显的方法来更新时,树如何从 DefaultTreeModel 更新。
我在这里错过了什么?
更新:解决方法 org.jdesktop.swingx.tree.TreeModelSupport。很棒的套件!作为字段添加到我的树模型接口对象中。然后将所有触发和treeModelListener方法委托给它。与 JTree 配合使用比 DefaultTreeModel 更好,在 JXTree 中效果更好。我只实现了单数选择/插入/删除,但到目前为止,该树在所有测试中都表现正确。
DefaultTreeModel 自己触发。侦听器位于模型上(因此您可以让两个 JTree 查看一个树模型的更改)。因此,该模型是通知所有侦听器的正确位置。
我认为应该尝试扩展AbstractTreeModel,因为那时人们有一些基本的基础设施。不对
TreeModel
也有 TreeModelListeners。用于对数据的更改。JTree就是这样一个倾听者。JTree 有视图方面的侦听器,分支是否扩展等。
在你的TreeModel中,必须遍历所有添加的TreeModelListeners,并调用适当的事件,如treeNodesInserted。