Search code examples
javaswingjtree

TreeNode shows only on Child. Why?


Hello i use following code. Every time actionPerformed is called the selected node gets a new child node. However JTree shows only one child per node although it has more. Why is that?

private class SomeActionListener implements ActionListener{

    private DefaultMutableTreeNode _root = new DefaultMutableTreeNode("ROOT");
    private JTree _tree;

    new SomeActionListener(){
        this._tree = new JTree(this._root);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)_tree.getSelectionPath().getLastPathComponent();
        DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(e.getWhen());
        selectedNode.add(newNode);
    }
}

Solution

  • You have to reload the tree model after adding the new node:

    ((DefaultTreeModel)(_tree.getModel())).reload();