JTree编辑根节点?

4
我正在尝试创建一个可以稍后编辑的JTree。目前我有以下代码,它生成了带有根节点的树。但是,当单击按钮(触发操作监听器)时,它会在根节点下添加另一个节点。我更希望它修改根节点。有没有办法做到这一点?我试过改变各种参数;例如将0改为-1,(MutableTreeNode) treeModel.getRoot()改为(MutableTreeNode) treeModel等等。
感谢您的帮助。
//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);
        }
    }
};

这是与官方 Oracle 教程《如何使用树 - 动态更改树》中代码相同的问题。 - mKorbel
是的,我按照那个教程做了。但是,他们没有讲解如何设置根节点。 - Kyle
1个回答

4
我用以下代码解决了问题。希望这能帮助到其他遇到同样问题的人。关键是创建一个新的默认节点,然后使用该节点与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();
        }
    }
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接