3

我注意到在 jTree 中调用和定义的 jTree.treeModelHandler 为 treeNodesChanged 和 treeNodesInserted 事件实现了空白方法。DefaultTreeModel 触发一个 treeNodesInserted 事件 & jTree 更新自己。但是,当我从 TreeModel 触发相同的事件时,什么也没有发生。

当它没有实现任何明显的方法时,我无法弄清楚树如何从 DefaultTreeModel 更新。

我在这里想念什么?

更新:解决方法 org.jdesktop.swingx.tree.TreeModelSupport。很棒的套件!添加为我的 TreeModel 接口对象的字段。然后将所有触发和 treeModelListener 方法委托给它。使用 JTree 比使用 DefaultTreeModel 效果更好,甚至使用 JXTree 效果更好。我只实现了单数选择/插入/删除,但到目前为止,树在所有测试中都表现正确。

4

1 回答 1

3

DefaultTreeModel 会自行触发。侦听器位于模型上(因此您可以让两个 JTree 查看一个 TreeModel 的更改)。所以模型是通知所有听众的正确位置。

我相信应该尝试将AbstractTreeModel扩展为具有一些基本基础结构的模型。不对


TreeModel 也有 TreeModelListeners。对于数据的更改。JTree 就是这样一个监听器。JTree 有视图方面的侦听器,分支是否扩展等等。

在您的 TreeModel 中,必须遍历所有添加的TreeModelListener并调用适当的事件,例如 treeNodesInserted。

于 2012-11-16T13:56:20.257 回答