sierra
24-01-2006, 14:28
hi,
ich habe einen JTree, der auf einem Treemodel aufbaut.
Nun habe ich von der Datenstruktur her lediglich Vektoren, die ich entsprechend in mein TreeModel mit einer vectorToTree-Methode einpflege, und dieses dann dem JTree bei der Instantiierung übergebe.
sobald ich merke, dass meine Daten im Vektor sich geändert haben, rufe ich vectorToTree erneut auf, und fülle NEU das TreeModel auf, (sind nicht soviele Elemente, so dass ich nicht darauf achte, welches Element hinzukam).
damit nun aber das JTree die Änderung für die Darstellung bemerkt, stehen mir lediglich meinJTree.repaint() und meinJTree.updateUI() zur Verfügung.
In der Regel wird daraufhin mein Baum bzw JTree dann neu dargestellt, jedoch in nicht nachvollziehbaren Umständen,
entweder der Baum war noch nicht gefüllt und wird zum ersten Mal gezeichnet, der Baum wurde zum x-ten Mal neu gezeichnet oder aber es klappt alles ohne Probleme, bekomme ich folgende Meldung, die ich nicht zurückverfolgen kann:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.plaf.basic.BasicTreeUI.paintRow(Unknow n Source)
at javax.swing.plaf.basic.BasicTreeUI.paint(Unknown Source)
at javax.swing.plaf.metal.MetalTreeUI.paint(Unknown Source)
at javax.swing.plaf.ComponentUI.update(Unknown Source)
at javax.swing.JComponent.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintWithOffscreenBuffer(Un known Source)
at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unkno wn Source)
at javax.swing.SystemEventQueueUtilities$ComponentWor kRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierar chy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Bin für jeden Hinweis dankbar....
Sierra
ich habe einen JTree, der auf einem Treemodel aufbaut.
Nun habe ich von der Datenstruktur her lediglich Vektoren, die ich entsprechend in mein TreeModel mit einer vectorToTree-Methode einpflege, und dieses dann dem JTree bei der Instantiierung übergebe.
sobald ich merke, dass meine Daten im Vektor sich geändert haben, rufe ich vectorToTree erneut auf, und fülle NEU das TreeModel auf, (sind nicht soviele Elemente, so dass ich nicht darauf achte, welches Element hinzukam).
damit nun aber das JTree die Änderung für die Darstellung bemerkt, stehen mir lediglich meinJTree.repaint() und meinJTree.updateUI() zur Verfügung.
In der Regel wird daraufhin mein Baum bzw JTree dann neu dargestellt, jedoch in nicht nachvollziehbaren Umständen,
entweder der Baum war noch nicht gefüllt und wird zum ersten Mal gezeichnet, der Baum wurde zum x-ten Mal neu gezeichnet oder aber es klappt alles ohne Probleme, bekomme ich folgende Meldung, die ich nicht zurückverfolgen kann:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.plaf.basic.BasicTreeUI.paintRow(Unknow n Source)
at javax.swing.plaf.basic.BasicTreeUI.paint(Unknown Source)
at javax.swing.plaf.metal.MetalTreeUI.paint(Unknown Source)
at javax.swing.plaf.ComponentUI.update(Unknown Source)
at javax.swing.JComponent.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintWithOffscreenBuffer(Un known Source)
at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unkno wn Source)
at javax.swing.SystemEventQueueUtilities$ComponentWor kRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierar chy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Bin für jeden Hinweis dankbar....
Sierra