我正在尝试在java swing中创建一个JTree,现在我想在运行时更改节点文本
try
{
int a=1,b=2,c=3;
DefaultMutableTreeNode root =
new DefaultMutableTreeNode("A"+a);
DefaultMutableTreeNode child[]=new DefaultMutableTreeNode[1];
DefaultMutableTreeNode grandChild[]= new DefaultMutableTreeNode[1];
child[0] = new DefaultMutableTreeNode("Central Excise"+b);
grandChild[0]=new DefaultMutableTreeNode("CE Acts: "+c);
child[0].add(grandChild[0]);
root.add(child[0]);
tree = new JTree(root);
}
catch(Exception ex)
{
ex.printStackTrace()
}
现在我想稍后如何在子节点和子节点中动态地将A 1更改为2
答案 0 :(得分:7)
您正在寻找javax.swing.tree.DefaultMutableTreeNode.setUserObject(Object)
DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot();
root.setUserObject("My label");
model.nodeChanged(root);
这假设您使用的是DefautltTreeModel
。
答案 1 :(得分:2)
如果您没有使用自定义TreeModel,那么树的模型是DefaultTreeModel。
在 DefaultMutableTreeNode getUserObject() 某种比较器来遍历树>(字符串或其他),以实现你想要的。
根据您的问题和粘贴的代码,您有2个简单选项:
成功更改后,您需要从模型中触发事件,以便稍后触发视图重绘( nodesWereInserted 等)。
希望有所帮助