2014-07-14 195 views
1

我正在尝试创建一个JTree,稍后我可以进行编辑。到目前为止,我有以下代码生成与根节点预期的树。但是,当点击按钮(触发动作侦听器)时,它会在根节点下添加另一个节点。我宁愿它做的是修改根节点。无论如何要做到这一点?我试图改变各种论点;像一个0到-1,(MutableTreeNode)treeModel.getRoot()到(MutableTreeNode)treeModel等。JTree编辑根节点?

感谢您的任何帮助。

//Set first as Defualt Node 
final DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("You must log in first."); 
final DefaultTreeModel treeModel = new DefaultTreeModel(rootNode); 
tree_folderList = new JTree(treeModel); 
tree_folderList.setEditable(true); 
tree_folderList.setBorder(new BevelBorder(BevelBorder.LOWERED)); 
treescrollPane = new JScrollPane(tree_folderList); 

tree_folderList.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); 
tree_folderList.setShowsRootHandles(true); 
//treeModel.addTreeModelListener(new MyTreeModelListener());   

ActionListener btn_RefreshMail_Listener = new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
     if (sessionkey == null || sessionkey.contains("Invalid")) { 
      treeModel.insertNodeInto(new DefaultMutableTreeNode("Must be logged in first."), (MutableTreeNode) treeModel.getRoot(), 0); 
     } 
     else { 
      //txt_folderList.setText(DMD.getInbox(sessionkey)); 
      treeModel.insertNodeInto(new DefaultMutableTreeNode("Logged in."), rootNode, 0); 
     } 
    } 
}; 
+0

是同一个问题蒙山从代码[Oracle官方教程如何使用树 - 动态调整树(http://docs.oracle.com/javase/tutorial/uiswing/components/tree.html#动态) – mKorbel

+0

是的,我遵循该教程。但是,它们不包括如何设置根节点。 – Kyle

回答

1

我知道它使用下面的代码。我希望这能够帮助别人解决同样的问题。秘诀是创建一个新的defaultnode,然后用setroot方法使用它。

ActionListener btn_RefreshMail_Listener = new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
     if (sessionkey == null || sessionkey.contains("Invalid")) { 
      DefaultMutableTreeNode rootNode2 = new DefaultMutableTreeNode("You must log in first."); 
      treeModel.setRoot(rootNode2); 
      treeModel.reload(); 
     } 
     else { 
      //txt_folderList.setText(DMD.getInbox(sessionkey)); 
      DefaultMutableTreeNode rootNode2 = new DefaultMutableTreeNode("Logged in."); 
      treeModel.setRoot(rootNode2); 
      treeModel.reload(); 
     } 
    } 
};