TreeNode仅在Child上显示。为什么?

时间:2013-07-14 21:30:38

标签: java swing jtree

您好我使用以下代码。每次调用actionPerformed时,所选节点都会获得一个新的子节点。但是JTree每个节点只显示一个子节点,尽管它有更多。这是为什么?

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

3 个答案:

答案 0 :(得分:3)

因为您不会触发任何事件来通知树模型已更改。

获取树模型并调用insertNodeInto(),不仅会插入节点,而且会从树模型向JTree发送一个事件,通知它已插入一个节点,并且视图必须相应更新。

答案 1 :(得分:1)

添加新节点后,您必须重新加载树模型:

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

答案 2 :(得分:0)

在添加,更新或删除节点后立即尝试关注:

this._tree.revalidate();
this._tree.repaint();