我使用AWT/Swing制作了一个树形结构,现在实现了可以在某节点名称上双击后,使其由不可编辑变成可编辑状态(editable=true/false),类似于平时咱们修改一个文件/文件夹的名称,修改完成后按【回车】确定名称,但目前按【回车】后,只会看到树形结构的该节点在界面上发生了变化,相对应的XML属性未改变,采用的键盘监听事件只能做到对树形结构的监听,无法监听到这个编辑动作,请各位给出一个解决办法,或者已经有这种源代码的提供参考一下(希望注释下,方便阅读),谢谢各位!

解决方案 »

  1.   

    这问题 ……有点笼统。
    提供几个方法,自己筛选吧。
    第一,你既然修改了树的节点,那么你一定需要修改这个tree的model吧。
    treemodel接口中有这个方法:valueForPathChanged
    void valueForPathChanged(TreePath path,
                             Object newValue)用户已将 path 标识的项的值更改为 newValue 时,进行通知。如果 newValue 表示一个真实的新值,则该模型应发布一个 treeNodesChanged 事件。 参数:
    path - 用户已更改的节点的路径
    newValue - TreeCellEditor 的新值如果你认为不够。给这个model加个监听
    addTreeModelListener
    void addTreeModelListener(TreeModelListener l)为树更改后发布的 TreeModelEvent 添加侦听器。 参数:
    l - 要添加的侦听器
    另请参见:treemodellistener里面。你要实现:
    void treeNodesChanged(TreeModelEvent e) 
              在已经以某种方式更改节点(或同级节点集)后调用。 
     void treeNodesInserted(TreeModelEvent e) 
              在已将节点插入树中以后调用。 
     void treeNodesRemoved(TreeModelEvent e) 
              在已从树中移除节点后调用。 
     void treeStructureChanged(TreeModelEvent e) 
              在树结构中从某个给定节点开始向下的地方发生彻底更改之后调用。 
    你既然要修改数据,就要到缓存数据的地方去找。swing里面几乎都是这样,除了一些非常简单的控件,需要的东西都到model里去找。
      

  2.   

    看到这个问题才注意这个JTree组件,学习啦