2013-04-15 48 views
2

我试图创建的Java Swing的JTree,现在我想在运行时更改节点文本改变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() 
} 

现在我以后要对我如何可以改变一个1到2动态地和类似地在子节点和大孩子节点上

回答

5

您正在寻找javax.swing.tree.DefaultMutableTreeNode.setUserObject(Object)

DefaultTreeModel model = (DefaultTreeModel) tree.getModel(); 
DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot(); 
root.setUserObject("My label"); 
model.nodeChanged(root); 

这是假设你正在使用的DefautltTreeModel

2

如果您没有使用自定义TreeModel,那么您的树的模型是DefaultTreeModel

你需要走的树某种比较的,给你DefaultMutableTreeNodegetUserObject()(字符串或其他),以达到你想要的东西。

你有2个简单相应选项,你的问题,你粘贴代码:

  • 如果你的变化是由比方说,一个点击事件触发,你可以选择和自走树那里。
  • 否则,你就需要从根本

在成功改变走路的树,你需要火从模型事件将触发后,一个视图的重绘(nodesWereInserted等)。

希望它可以帮助