我在代码中想要把tree.setCellEditor(new DefaultCellEditor(new JTextField()){
public boolean stopCellEditing(){
  DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
  MyObject obj = new MyObject(); 
  selectedNode.setUserObject(obj);
}
}我想把 selectedNode 的字符串 设置成自己的类MyObject ,但是如果第一次编辑了Jtree的一个结点后,第二次再进来编辑同一个节点 selectedNode.getUserObject() 出来的又是字符串,不是自己刚才setUserObject(obj) 的对象了,好像是在哪里又给覆盖了,请问有谁知道如何解决吗?

解决方案 »

  1.   

       不是覆盖问题,你第一次实例化tree时,对象是Swing里的DefaultMutableTreeNode对象,对来的效果肯定是你想要的效果,第二实例化是你把对象付给了你所说的MyObject的,系统根本不认识你写的这个类,反应出来的可定是字符串了。
      

  2.   

    to moshangmoxia 能否说的再详细些?第二次实例化是什么时候呢?我是这样的
    1.初始化树  
    MyObject classify = new MyObject();
    DefaultMutableTreeNode newChild = new DefaultMutableTreeNode(classify);
      parentNode.add(newChild);
      初始化完后取出来都是MyObject类型这个是对的,但是接下来我要修改树结点的内容,修改后就出现这个问题,就感觉像你说的又进行了第二次实例化,但是我不知道第二次实例化是在什么时候,请大侠再详细指点一下!多谢!
      

  3.   

    这个应该不是第二次实例化的问题,我在 addActionListener 中修改了后就可以,但是我现在想在tree.setCellEditor 解决这个问题,不知道有没有人知道如何解决?