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