您好我使用以下代码。每次调用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);
}
}
答案 0 :(得分:3)
因为您不会触发任何事件来通知树模型已更改。
获取树模型并调用insertNodeInto(),不仅会插入节点,而且会从树模型向JTree发送一个事件,通知它已插入一个节点,并且视图必须相应更新。
答案 1 :(得分:1)
添加新节点后,您必须重新加载树模型:
((DefaultTreeModel)(_tree.getModel())).reload();
答案 2 :(得分:0)
在添加,更新或删除节点后立即尝试关注:
this._tree.revalidate();
this._tree.repaint();