首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么JTree只处理来自DefaultTreeModel的事件,而不处理来自TreeModel的事件?

为什么JTree只处理来自DefaultTreeModel的事件,而不处理来自TreeModel的事件?
EN

Stack Overflow用户
提问于 2012-11-16 21:47:17
回答 1查看 395关注 0票数 3

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

当树没有实现任何明显的方法时,我不知道如何从DefaultTreeModel更新树。

这里我漏掉了什么?

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

EN

回答 1

Stack Overflow用户

发布于 2012-11-16 21:56:20

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

我认为人们应该尝试扩展AbstractTreeModel,因为这样就有了一些基本的基础设施。不是这样

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13417880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档