更改jtree节点文本运行时

时间:2013-04-15 10:37:40

标签: java swing jtree

我正在尝试在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

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 等)。

希望有所帮助