2013-07-14 39 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(); 
相關問題