我注意到在jTree中调用&定义的jTree.treeModelHandler为treeNodesChanged和treeNodesInserted事件实现了空方法。DefaultTreeModel会触发一个treeNodesInserted事件& jTree会自我更新。但是,当我从TreeModel触发相同的事件时,什么也没有发生。
当树没有实现任何明显的方法时,我不知道如何从DefaultTreeModel更新树。
这里我漏掉了什么?
更新:解决org.jdesktop.swingx.tree.TreeModelSupport问题。很棒的工具包!作为字段添加到我的TreeModel接口对象中。然后将所有的触发和treeModelListener方法委托给它。与JTree一起工作比与DefaultTreeModel一起工作更好&甚至更好与JXTree一起工作。我只实现了单一的选择/插入/删除,但到目前为止,树在所有测试中都表现正确。
发布于 2012-11-16 21:56:20
DefaultTreeModel会自己触发。监听器位于模型上(因此您可以让两个JTrees查看一个TreeModel的更改)。因此,模型是通知所有侦听器的正确位置。
我认为人们应该尝试扩展AbstractTreeModel,因为这样就有了一些基本的基础设施。不是这样
TreeModel也有TreeModelListeners。用于数据的更改。JTree就是这样一个监听器。JTree有视图方面的侦听器,分支是否扩展等等。
在您的TreeModel中,必须遍历所有添加的TreeModelListener,并调用适当的事件,如treeNodesInserted。
https://stackoverflow.com/questions/13417880
复制相似问题