当我试图将其添加到Jframe时,JTREE不要更新



当我尝试动态更新我的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);
}

您也应该将tree添加到rootMainForm

这条线

frame.add(tree)

将树添加到ContentPane 而这条线

frame.setContentPane(rootMainForm);

覆盖框架的整个ContentPane。我敢打赌,您有2个JTREES。当您评论最后一行时,您将看到最新的添加组件(tree此处)。当您进行删除时,您将用未设置的面板rootMainForm

覆盖整个框架的内容

您的评论让我想,您尝试在此行中更新您的JTREE

 tree = new JTree(model);

这将创建与GUI独立的全新JTree。如果要更新现有的JTREE,只需使用tree.setModel(model) tree=new JTree(model)

最新更新