JTree中调用UpdateUI()报以下错误
有哪位兄弟解决了,谢谢,100分赠送
java.lang.NullPointerException
 at javax.swing.plaf.basic.BasicTreeUI.paintRow(BasicTreeUI.java:1367)
 at javax.swing.plaf.basic.BasicTreeUI.paint(BasicTreeUI.java:1171)
 at javax.swing.plaf.metal.MetalTreeUI.paint(MetalTreeUI.java:152)
 at javax.swing.plaf.ComponentUI.update(ComponentUI.java:142)
 at javax.swing.JComponent.paintComponent(JComponent.java:541)
 at javax.swing.JComponent.paint(JComponent.java:808)
 at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4787)
 at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4740)
 at javax.swing.JComponent._paintImmediately(JComponent.java:4685)
 at javax.swing.JComponent.paintImmediately(JComponent.java:4488)
 at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:410)
 at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:117)
 at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
 at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
 at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
 at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
 at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
 at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
 at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

解决方案 »

  1.   

    NullPointerException!!!!!!!
    就是这个了
      

  2.   

    node都初始化null先
    对于tree的根节点root = tree.getModel().getRoot(),判断下是否为null
    然后再updateUI()看看
      

  3.   

    updateUI在方法最后会调用对应Component的UI类中的paint(Graphics g, JComponent c)方法。NullPointerException可能是你还有node没有初始化造成的吧,导致c参数为null
      

  4.   

    我也以为是tree 的空指针问题,但是我判断了tree.getModel().getRoot()!=null ,然后updateUI仍然还是报错,请问有别的方法使tree刷新吗?
    我要解决的问题是,J2EE中,JMS发消息,在后台更新树的叶子,当树刷新的时候(调用repaint())时,叶接点信息不能完全显示,都显示为 ????  ,请问,刷新树调用什么函数可以解决上述问题,谢谢!!
    我调用updateUI()可以解决当前(信息不能完全显示,都显示为 ????  )问题,但运行时总是报以上错误!
      

  5.   

    必须在事件处理线程中操作Swing组件,如果像你的程序中那样需要在别的线程中操作Swing组件的话,要使用下面这样的方法:SwingUtilities.invokeLater(new Runnable()
    {
    public void run()
    {
    tree.updateUI();
    }
    });
      

  6.   

    楼上的方法楼主试试,这样会使对tree的修改在Swing本身线程(不清楚说法是否有误)之后运行。