JavaSwing:扩展TreeNode
我正在定制一个封闭源代码的客户端应用程序。它在UI中有一个树,只公开了获取所选节点的方法。它返回TreeNode的一个子类。而且没有办法获得对父树的引用。现在,我想将所选节点扩展到其叶子 有没有办法从DefaultMutableTreeNode获取对JTree组件的引用?我计划使用JTree.expandPath(),但我只有对treenode的引用JavaSwing:扩展TreeNode,java,swing,Java,Swing,我正在定制一个封闭源代码的客户端应用程序。它在UI中有一个树,只公开了获取所选节点的方法。它返回TreeNode的一个子类。而且没有办法获得对父树的引用。现在,我想将所选节点扩展到其叶子 有没有办法从DefaultMutableTreeNode获取对JTree组件的引用?我计划使用JTree.expandPath(),但我只有对treenode的引用 我是Swing新手,欢迎提出任何实现这一点的建议。实际上,只有JTree知道扩展状态,TreeNodes中没有此类信息。TreeNode位于一侧,
我是Swing新手,欢迎提出任何实现这一点的建议。实际上,只有JTree知道扩展状态,TreeNodes中没有此类信息。TreeNode位于一侧,在JTree上没有指针(至少不是默认的,您当然可以使用引用创建自己的,但它打破了一点模式)
您应该重新考虑您希望在哪些地方进行此扩展,以使其成为您可以访问JTree的地方(提供更多关于您的上下文的详细信息,以了解您想要做什么,以及在哪些情况下)。查看
DefaultMutableTreeNode
的源代码,我看不到任何好的方法,但您可以尝试以下方法之一:
- 扩展
并将引用存储到树中DefaultMutableTreeNode
- 默认节点具有“用户对象”的概念。可以将对树的引用设置为此对象。它是完全非类型安全的,但可能会工作。编辑:事实上,仔细观察用户对象是如何使用的(作为树路径的文本表示,在
中),以这种方式设置用户对象会破坏API的预期用途。所以:讨厌,但可能有用toString()
您必须使用通过简单调用DefaultMutableTreeNode生成的调用。但是,我在他的问题中没有看到鼠标事件的引用。如果它恰好是对用户单击的响应,
event.getSource()
可能是最好的选择。我正在定制一个封闭源代码的客户端应用程序。它在UI中有一个树,只公开了获取所选节点的方法。它返回TreeNode的一个子类。而且没有办法获得对父树的引用。现在我想将所选节点扩展到它的叶子。@sarav-在这种情况下,恐怕你运气不好。如果除了树节点之外没有其他访问权限,则无法控制JTree的扩展状态。如果您可以访问顶部窗口/组件(或同一窗口中的任何组件),并且确定它的结构是静态的,那么可能会有一种(非常)肮脏的方法来执行此操作。@sarav-(请注意,用这些新的细节编辑你的问题,让每个人都清楚地看到整个情况)谢谢你的回复。是的,我在这里运气不好。找一些其他的工作。