2008-12-04 5 views
1

Je continue à obtenir cette NPE dans mon application et je n'arrive pas à m'en débarrasser parce qu'elle n'apparaît dans aucun de mes codes source. Comme vous pouvez le voir sur la pile, ça ne se passe pas dans mon code mais dans le plafonnier Swing. Est-ce que l'un d'entre vous a eu ce problème et peut-être compris ce qui se passe ici?

11:28:23,273 [AWT-EventQueue-0] ERROR [is.althingi.styran.utlit.styran.StyranImpl] 
    - uncaughtException 
    java.lang.NullPointerException 
    at javax.swing.plaf.basic.BasicTableUI$Handler.setValueIsAdjusting(Unknown Source) 
    at javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(Unknown Source) 
    at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source) 
    at java.awt.Component.processMouseEvent(Unknown Source) 
    at javax.swing.JComponent.processMouseEvent(Unknown Source) 
    at java.awt.Component.processEvent(Unknown Source) 
    at java.awt.Container.processEvent(Unknown Source) 
    at java.awt.Component.dispatchEventImpl(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Window.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 

Répondre

8

J'ai réussi à contourner le problème!

Le fait est que j'ajoute un ListSelectionListener à mon JTable; dans la méthode valueChanged de mon écouteur, puis appelez scrollRectToVisible puis updateUI, ce qui entraîne mon exception.

Ce que j'ai fait était d'ajouter invokeLater autour de l'appel updateUI et plus aucune exception!

Comme ceci:

SwingUtilities.invokeLater(new Runnable() { 
    public void run() { 
     updateUI(); 
    } 
    }); 

Maintenant que j'ai la « réponse » à ma question (bien que je ne suis pas sûr que je comprends encore pourquoi le invokeLater aidé?), Je pense que ma question n'a pas été bonne assez. Je n'ai pas fourni suffisamment d'informations sur mon problème pour que quelqu'un puisse répondre à la question. Devrais-je avoir étudié le problème plus avant que je demande? Je ne sais pas.

Peut-être qu'il suffit que je fournisse la solution qui m'a aidé!

+0

Lorsque vous appelez invokeLate(), vous déplacez l'appel de la fonction updateUI() à la fin de la file d'attente des événements. Ma conjecture est que l'appel de updateUI() essayait d'accéder à un objet qui n'était pas encore créé, mais cet objet est disponible peu de temps après. –

+0

Je pense qu'il devrait être un bug de LookAndFeel –

+0

Celui-ci résout mon problème aussi :) –

2

Je ne ai jamais eu ce problème, mais quand je reçois ce genre d'erreurs « cachées » Je finis toujours à la recherche du code source original et essayer de comprendre le problème ...

De cette source vous pouvez voir la fonction à l'origine de l'exception:

private void setValueIsAdjusting(boolean flag) { 
    table.getSelectionModel().setValueIsAdjusting(flag); 
    table.getColumnModel().getSelectionModel(). 
    setValueIsAdjusting(flag); 
} 

Pouvez-vous confirmer si votre modèle de sélection de table; modèle de colonne; modèle de sélection de colonne ne sont pas null?

+0

Comment pourrais-je? Il y a un NPE là-dedans, n'est-ce pas? Mais bien sûr, le fait est que je n'arrive pas à comprendre pourquoi l'un d'entre eux est nul, car peu importe où je mets mon débogage, ils ne sont jamais nuls !!!! –

Questions connexes