Java 当我试图将JTree添加到JFrame时,它不会更新

Java 当我试图将JTree添加到JFrame时,它不会更新,java,swing,Java,Swing,当我尝试动态更新我的JTree时,它工作得很好,但只显示我的新树。但是,我试图将它添加到JFrame中——什么也没有发生。JTree不更新。我不明白为什么 public MainForm(){ DefaultMutableTreeNode root = new DefaultMutableTreeNode("ROOT"); DefaultTreeModel model = new DefaultTreeModel(root); tre

当我尝试动态更新我的JTree时,它工作得很好,但只显示我的新树。但是,我试图将它添加到JFrame中——什么也没有发生。JTree不更新。我不明白为什么

public MainForm(){

    DefaultMutableTreeNode root = new DefaultMutableTreeNode("ROOT");                 
    DefaultTreeModel model = new DefaultTreeModel(root);

    tree = new JTree(model);

    buildTree(model, "Node 1/Node 2/Node 3/Node 4");
    buildTree(model, "Node 1/Node 2/Node 3/Node 5");
    buildTree(model, "Node 1/Node 2/Node 3/Node 6");
    buildTree(model, "Node 1/Node 2/Node 4/Node 5");
    buildTree(model, "Node 1/Node 1/Node 3/Node 5");


    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    frame.add(tree);
    frame.setSize(900, 600);
    frame.setVisible(true);

    //if I comment next line I`ll get just a tree in my frame (but updated 
    //as I wanted);
    //But if not I`ve got my form with buttons and tree, but tree doesn`t 
    //update
    frame.setContentPane(rootMainForm);

}

您还应该将
添加到
rootmain表单

这条线

frame.add(tree)
将树添加到
ContentPane
而这条线

frame.setContentPane(rootMainForm);
覆盖框架的整个
ContentPane
。我打赌你有两个JTree。注释最后一行时,您将看到最近添加的组件(
tree
此处)。当您取消对它的注释时,您将使用Unknown面板覆盖框架的整个内容
rootMainForm

你的评论让我觉得,你实际上是想在这行中更新你的jtree

 tree = new JTree(model);

这将创建与GUI分离的全新
JTree
。如果您想更新现有的JTree,只需使用
tree.setModel(model)
而不是
tree=newjtree(model)

您知道这段代码什么都没说吗?未知
buildTree
unknown
rootMainForm
但根据MainForm.form,我得到了1个JTree,它在我的rootMainForm中。但是您正在这里创建新的JTree
tree=newjtree(model)非常感谢您的时间和耐心!我有点累了,或者说我有点笨,我想>@AleksanderIksanov,不用担心。这样的错误发生在你学习新东西的时候:)祝你好运!