我可以通知到记录发生了改变~~~
填加一个节点本身并没有什么问题,关键是在填加后我的tree无法获得这个Model的改变~
在这里有DefaultTreeModel只是一时的权益,当然还是需要自己去做一个TreeModel,但是自己没有什么比较好的思路去完成它,希望有谁能指引一条明路

解决方案 »

  1.   

    如果知道某个节点发生了变化可以使用
    reload方法重新加载一下这个节点,这样
    树的显示就更新了。
    有这样一段代码:其中
    fnode.expand(node)是给node添加子节点的方法,通过这个方法node将拥有子节点。
    如果你要全部的代码可以看一下http://dev.csdn.net/develop/article/33/33541.shtm应该能够对你有帮助。            Thread runner = new Thread() 
                {
                  public void run() 
                  {
                    if (fnode != null && fnode.expand(node)) 
                    {
                      Runnable runnable = new Runnable() 
                      {
                        public void run() 
                        {
                           m_model.reload(node);
                        }
                      };
                      SwingUtilities.invokeLater(runnable);
                    }
                  }
                };
                runner.start();
      

  2.   

    简单的方法就是把整棵树刷新一下,重新setModel
    只不过刷新调用的地方要有所考究
    使用observer是最好的做法,但是可能要难点
    也可以直接在更改的地方调用
    写一个setModel和flashTree()的方法在这个类里就行了
      

  3.   

    我说明白点,我在这个tree上加了一个鼠标监听,我把model   reload过后,并且把tree  updateUI
    这时候这个节点是能看见的,这是没问题的,但是这时候加在tree上的鼠标监听对这个新增加的节点,不生效!不知道该怎么解决,其实这个时候model已经改变了,tree所显示出来的节点也已经发生变化
    代码是这样的:getTreeModel().reload();
    getOrderTree().setModel(getTreeModel());
    getOrderTree().updateUI();但是我加载在tree上的鼠标监听却对这个新增节点没有作用
      

  4.   

    只有UI刷新了?
    那你试试看
    getOrderTree().updateUI();
    换成
    getOrderTree().paintComponents(getOrderTree().getGraphics());
      

  5.   

    你的监听事件再从新添加一次是否可以???你觉得呢。getOrderTree().paintComponents(getOrderTree().getGraphics());
    去试试这个
      

  6.   

    我试过了,在那个线程外随便填加节点都没问题~但是在那个线程内添加后就出现了上述情况,有点郁闷!是不是应该锁定这个添加节点的动作?或者去通知这个tree它已经发生了改变?
      

  7.   

    怎么就没人了?通知这个tree它已经改变,显示没问题,但是监听还是存在问题
      

  8.   

    但是在那个线程内添加后就出现了上述情况,有点郁闷!是不是应该锁定这个添加节点的动作?或者去通知这个tree它已经发生了改变?感觉这是关键,只要给Tree添加了监听器以后,再向其中添加子节点应该不用再管监听器了
      

  9.   

    他奶奶的,我找到原因了我添加的节点是"<html><font color=#ff0000>123</font></html>"在equals时是用的"123"贼他大爷