【问题标题】:Adding new leaf to jTree node将新叶子添加到 jTree 节点
【发布时间】:2011-09-05 14:17:32
【问题描述】:

假设,我有一个 jTree 的代码

    JTree jTree = new JTree() ;
    DefaultMutableTreeNode root = new DefaultMutableTreeNode("root") ;
    jTree.setModel( new DefaultTreeModel(root));

    DefaultMutableTreeNode firstNode = new DefaultMutableTreeNode("first node") ;

现在我想从 firstNode 变量不可用的地方将一个叶子添加到名为“第一个节点”的节点(当前是一个叶子)中。怎么做到呢?

澄清: 好吧!我在一个类中有一个 JFrame(扩展摇摆),一个 jTree 是这个类的私有成员。现在我将这个类对象(作为参数)传递给另一个应该填充 jTree 的类方法。但是我无法从另一个类方法中对那个 jTree 做任何事情。 (当然访问私有方法不是我的问题:)

【问题讨论】:

    标签: java swing


    【解决方案1】:

    试试这个:

    firstNode.add(new DefaultMutableTreeNode("leaf node"));
    

    更新:根据您的 cmets,您必须具有对要在其下添加新叶子的节点的引用。如果您正在响应树中的树选择事件,那么您可以通过以下方式获取参考:

    DefaultMutableTreeNode firstNode = (DefaultMutableTreeNode)jTree.getSelectionPath().getLastPathComponent();
    

    【讨论】:

    • 对不起我的错!我忘了告诉我,firstNode 变量在我想在其中附加一些东西的地方不可用。
    • @Dewsworld ...如果有帮助,请查看我的编辑。否则你必须解决你的问题。
    • 亲爱的@Swaranga Sarma。作为一个新的 Java 人,我很愚蠢地澄清了我的问题。我已经澄清了我的问题。现在,您可能希望提供帮助:)
    【解决方案2】:

    请注意,结构修改不会自动通知。使用默认模型,您可以使用:

    treeModel.insertNodeInto(newChild, parent, index)
    

    在你的情况下,我不明白什么是可用的,什么不是......

    【讨论】:

    • +1 用于通知,只是一个小问题:不会自动通知任何节点修改(结构和内容)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 2012-10-04
    • 1970-01-01
    相关资源
    最近更新 更多