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);
        }
    }
};
4

1 回答 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();
        }
    }
};
于 2014-07-14T16:06:36.023 回答