[英]Java Swing: Expanding TreeNode
我正在自定义封闭源客户端应用程序。 它在用户界面中有一棵树,并且仅公开了一种获取所选节点的方法。 它返回TreeNode的子类。 而且没有办法获得对父树的引用。 现在,我想将所选节点扩展到其叶子。
有什么方法可以从DefaultMutableTreeNode获取对JTree组件的引用吗? 我打算使用JTree.expandPath(),但仅具有对treenode的引用。
我是Swing的新手,欢迎提出任何建议。
实际上,只有JTree知道扩展状态,TreeNode中没有此类信息。 TreeNode位于“模型”侧,并且在JTree上没有指针(至少不是默认指针),您当然可以使用引用创建自己的指针,但会破坏模式。
您应该重新考虑要扩展到可以访问JTree的位置的位置(可能提供有关上下文的更多详细信息,以了解更多您想做的事情,以及在什么情况下)。
在查看DefaultMutableTreeNode
的源代码时,我看不到任何不错的方法,但是您可以尝试以下方法之一:
DefaultMutableTreeNode
并存储对树的引用 toString()
的文本表示形式),以这种方式设置用户对象将破坏API的预期用途。 所以:令人讨厌,但可能会起作用。 树节点是树模型中的元素。 因此,它没有对作为其视图的树的任何引用。
有趣的是知道您在哪个对象中:由于您想对鼠标事件做出反应,因此我想您可以访问视图层(至少通过取回起源于MouseEvent的组件(应该是JTree)) 。 如果是这样,您可以获取选定的行并调用expandPath 。 从DefaultMutableTreeNode构建TreePath作为练习:-)
编辑从下面的评论中,让我澄清我的答案。 您必须使用通过简单地在DefaultMutableTreeNode上调用getPath生成的TreePath来调用expandPath 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.