NullPointerException na hora de atualizar JList

Olá. Fiz um messenger em Java e estou com uma pulga atrás da orelha quanto a atualização da UI do JList q lista meus contatos.
De vez em quando, na hora de atualizar o JList, da um exception nas classes internas dele, q nao faço ideia de onde sai.
O pior de tudo eh q eh soh DE VEZ EM QUANDO, nao toda vez:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at javax.swing.plaf.basic.BasicListUI.getHeight(BasicListUI.java:1085)
	at javax.swing.plaf.basic.BasicListUI.paintImpl(BasicListUI.java:299)
	at javax.swing.plaf.basic.BasicListUI.paint(BasicListUI.java:227)
	at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
	at javax.swing.JComponent.paintComponent(JComponent.java:763)
	at javax.swing.JComponent.paint(JComponent.java:1027)
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5122)
	at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:277)
	at javax.swing.RepaintManager.paint(RepaintManager.java:1217)
	at javax.swing.JComponent._paintImmediately(JComponent.java:5070)
	at javax.swing.JComponent.paintImmediately(JComponent.java:4880)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:803)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
	at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)
	at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at javax.swing.plaf.basic.BasicListUI.paintImpl(BasicListUI.java:312)
	at javax.swing.plaf.basic.BasicListUI.paint(BasicListUI.java:227)
	at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
	at javax.swing.JComponent.paintComponent(JComponent.java:763)
	at javax.swing.JComponent.paint(JComponent.java:1027)
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5122)
	at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:277)
	at javax.swing.RepaintManager.paint(RepaintManager.java:1217)
	at javax.swing.JComponent._paintImmediately(JComponent.java:5070)
	at javax.swing.JComponent.paintImmediately(JComponent.java:4880)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:803)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
	at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)
	at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Ja tentei alterar o modo de atualizar o JList, mas nao adianta. Ja tentei (jlContatos eh o meu JList):

		jlContatos.revalidate();
		jlContatos.updateUI();
		jlContatos.validate();
		jlContatos.updateUI();
		jlContatos.validate();
		jlContatos.repaint();
		jlContatos.updateUI();
		jlContatos.validate();
		jlContatos.repaint();
		jlContatos.validate();
		jlContatos.repaint();
		jlContatos.updateUI();

Ja tentei alterar a ordem dos comandos tbm, mas mesmo assim, às vezes solta essa Exception. O interessante eh q meu sistema funciona lisinho, continua como se nao tivesse existido a exception, soh fica ela no console do eclipse no fundo. Soh q eu nao queria ter q explicar para meu professor q aquela exception “nao da nada” :?

Ah, eu tambem criei um Renderer proprio, talvez ele tenha alguma culpa? Tambem criei meu ListModel, ele pode ter culpa tbm?

Aproveitando o embalo, alguem sabe definir certinho qual a diferenca entre os metodos q utilizei acima? (A unica coisa q percebi eh q o validate nao atualiza os dados da tela na hora, soh quando eu clico neles ou arrasto algo em cima…)

Desde ja agradeço.