IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

[JTable] NullPointeurException avec prepareRenderer


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 9
    Par défaut [JTable] NullPointeurException avec prepareRenderer
    Voila mon problème :
    J'ai une JFrame avec 3 listes et un JTable
    Lorsque l'utilisateur clique sur un element la premiere JList des élements s'affichent dans la seconde, lorsqu'il clique sur un element la seconde JList des élements s'affichent dans la seconde et lorsqu'il clique sur un élement de la dernière alors le JTable est initialisé.

    Le problème vient de lorsque l'on clique sur la troisième JList il y a un NullPointeurException qui se produit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    java.lang.NullPointerException
     
    	at javax.swing.JTable.prepareRenderer(JTable.java:3731)
     
    	at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:1149)
     
    	at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1051)
     
    	at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:974)
     
    	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.paintChildren(JComponent.java:647)
     
    	at javax.swing.JComponent.paint(JComponent.java:817)
     
    	at javax.swing.JViewport.paint(JViewport.java:722)
     
    	at javax.swing.JComponent.paintChildren(JComponent.java:647)
     
    	at javax.swing.JComponent.paint(JComponent.java:817)
     
    	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)
    Visiblement cela se produit dans la methode prepareRender de la classe JTable dont voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
            Object value = getValueAt(row, column);
    	boolean isSelected = isCellSelected(row, column);
    	boolean rowIsAnchor = (selectionModel.getAnchorSelectionIndex() == row);
    	boolean colIsAnchor =
    	    (columnModel.getSelectionModel().getAnchorSelectionIndex() == column);
    	boolean hasFocus = (rowIsAnchor && colIsAnchor) && isFocusOwner();
     
    	return renderer.getTableCellRendererComponent(this, value,
    	                                              isSelected, hasFocus,
    	                                              row, column);
        }
    J'en ai donc déduis que la variable render était à Null

    Or je n'ai défini aucune class implementant TableCellRenderer et je n'ai touché à aucune méthode apparaissant dans l'erreur de compilation

    Voici le code du listener de selection de ma troisieme liste (_listeMois)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    _listeMois.addListSelectionListener(new ListSelectionListener() {
                public void valueChanged(ListSelectionEvent e) {
                    if (e.getValueIsAdjusting() == false) {
                        int index = _listeMois.getSelectedIndex();
                        if (index != -1) {
                            String compte = ((Compte) _listeComptes.getSelectedValue()).
                                            toString();
                            int annee = Integer.parseInt(((Annee) _listeAnnees.
                                                          getSelectedValue()).toString());
                            String mois = ((Mois) _listeMois.getSelectedValue()).
                                          toString();
                            _listeTransactions.setModel(_user.getMois(compte, annee,
                                    mois));
                        }
                    }
                }
            }
            );
    Donc si quelqu'un a une idée d'où cela vient ou encore où chercher... je suis preneur

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 9
    Par défaut
    Up

    Excusez moi mais là je suis vraiment bloqué... Personne n'a d'idées

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 9
    Par défaut
    Bon j'ai fait d'autres essais mais ça ne fonctionne toujours pas

    J'ai enlevé le _listeTransactions.setModel(nouveauModele) et j'ai recrée la JTable en faisant _listeTransaction = new JTable(nouveauModele)

    L'avantage c'est que je n'ai plus de message d'erreur et l'inconvénient c'est que la JTable n'affiche rien d'autre que le header (alors que j'ai vérifié que le modele contient bien des données)

    Voila si quelqu'un a une idée...

Discussions similaires

  1. [JTable] Créer une JTable vide avec des noms de colonnes.
    Par Cyborg289 dans le forum Composants
    Réponses: 2
    Dernier message: 27/09/2005, 15h54
  2. [JTable] Problème avec le modèle
    Par etiennegaloup dans le forum Composants
    Réponses: 2
    Dernier message: 20/09/2005, 16h25
  3. [JTable] Problème avec la couleur de fond
    Par ellocin dans le forum Composants
    Réponses: 5
    Dernier message: 13/09/2005, 23h07
  4. [JTable] remplir avec une matrice
    Par ybdz dans le forum Composants
    Réponses: 3
    Dernier message: 08/12/2004, 21h03
  5. [JTable] Cellule avec deux boutons
    Par cherbox dans le forum Composants
    Réponses: 3
    Dernier message: 12/08/2004, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo