JTree里修改一个节点名字,调用下面的响应函数,在这个函数里只能得到更改后的节点名字,如何才能得到被更改节点更改之前的名字(不知道之前的节点名字就没办法更新数据库)程序如下:
public void treeNodesChanged(TreeModelEvent e) {
//System.out.println("treeNodesChanged "+e.toString());
TreePath treepath=e.getTreePath();
DefaultMutableTreeNode node=(DefaultMutableTreeNode)treepath.getLastPathComponent();
try{
int []index=e.getChildIndices();
node=(DefaultMutableTreeNode)node.getChildAt(index[0]);
}catch(NullPointerException ex){}
String newname=(String)node.getUserObject();//获得更改后的节点名字
System.out.println("update to "+newname);
}
public void treeNodesChanged(TreeModelEvent e) {
//System.out.println("treeNodesChanged "+e.toString());
TreePath treepath=e.getTreePath();
DefaultMutableTreeNode node=(DefaultMutableTreeNode)treepath.getLastPathComponent();
try{
int []index=e.getChildIndices();
node=(DefaultMutableTreeNode)node.getChildAt(index[0]);
}catch(NullPointerException ex){}
String newname=(String)node.getUserObject();//获得更改后的节点名字
System.out.println("update to "+newname);
}
无论更新什么数据,实际都是去更新model里面的 数据。
在你更新model的时候先把原来数据取得并缓存一份。还是说你找不到什么时候更新的model?
DefaultMutableTreeNode node=(DefaultMutableTreeNode)treepath.getLastPathComponent();
System.out.println((String)node.getUserObject());
tree.addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e){
TreePath treepath = e.getPath();
DefaultMutableTreeNode node=(DefaultMutableTreeNode)treepath.getLastPathComponent();
System.out.println((String)node.getUserObject());
}
});