2013-07-14 38 views
0

你好,我使用下面的代码。每调用一次actionPerformed,选定节点都会获得一个新的子节点。但JTree每个节点只显示一个孩子,尽管它有更多。这是为什么?TreeNode仅在Child上显示。为什么?

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

回答

1

您可以选择添加新节点后重新加载树模型:

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

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

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

0

尝试以下,添加,更新或删除节点之后:

this._tree.revalidate(); 
this._tree.repaint(); 
相关问题