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 :

listener et jTable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 78
    Par défaut listener et jTable
    bonjour,
    j'ai un listener sur un jTree qui affiche une jTable, par ailleurs, j'ai un listener sur un jComboBox qui affiche une autre jTable.
    en premier, une jTable est affichée par le listener du jComboBox, ensuite quand je clique sur les noeuds du jTree la deuxième jTable s'affiche mais à un certain moment en cliquant sur d'autre noeuds dans le jTree (sans que je clique sur les items du combobox) il y a le message d'erreur suivant qui s'affiche:
    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
     
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
     
    at outildediagnostic.expertise$14.getColumnClass(expertise.java:992)
    at javax.swing.JTable.getColumnClass(JTable.java:1833)
    at javax.swing.JTable.getCellRenderer(JTable.java:3878)
    at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:1984)
    at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1887)
    at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1810)
    at javax.swing.plaf.ComponentUI.update(ComponentUI.java:142)
    at javax.swing.JComponent.paintComponent(JComponent.java:742)
    at javax.swing.JComponent.paint(JComponent.java:1005)
    at javax.swing.JComponent.paintChildren(JComponent.java:842)
    at javax.swing.JComponent.paint(JComponent.java:1014)
    at javax.swing.JViewport.paint(JViewport.java:728)
    at javax.swing.JComponent.paintChildren(JComponent.java:842)
    at javax.swing.JComponent.paint(JComponent.java:1014)
    at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4963)
    at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4916)
    at javax.swing.JComponent._paintImmediately(JComponent.java:4859)
    at javax.swing.JComponent.paintImmediately(JComponent.java:4666)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:451)
    at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:114)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
    sachant que l'erreur suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    at outildediagnostic.expertise$14.getColumnClass(expertise.java:992)
    pointe sur la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     public Class getColumnClass(int c) {return getValueAt(0, c).getClass();}
    du code suivant (le TableModel est celui de la jTable affichée par le listener du jTree):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      TableModel dataModel3 = new AbstractTableModel(){
      public int getColumnCount() { return tab.length; }
      public int getRowCount() { return donnée.length;}
      public Object getValueAt(int row, int col) {return donnée[row][col];}
      public String getColumnName(int column) {return tab[column];}
      public Class getColumnClass(int c) {return getValueAt(0, c).getClass();}
      public boolean isCellEditable(int row, int col) {return col != 5;}
      public void setValueAt(Object aValue, int row, int column) { donnée[row] [column] = aValue; }
      };
    j'aimerais bien savoir d'où provient le problème.
    merci.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    Manifestement getValueAt(0, c) renvoie null dans certains cas

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 78
    Par défaut
    qu'est ce qu'il faut faire dans ce cas?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    getColumnClass(int c) dépend uniquement de la colonne, pas de la valeur qui est dans la case. Tu peux construire un tableau de classes (CLass[] ...) et l'utiliser pour ça (comme pour les noms de colonnes)

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 78
    Par défaut
    je vois pas trop ce que tu veux dire, je vois pas comment je peux utiliser un tableau de classes pour construire une table.
    pourrais tu m'expliquer plus clairement?
    merci.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Class[] types = new Class[3];
    types[0] = Double.class;
    types[1] = String.class;
    types[2] = Date.class;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Listener sur JTable
    Par calypso dans le forum Composants
    Réponses: 3
    Dernier message: 05/02/2009, 16h27
  2. Réponses: 7
    Dernier message: 23/03/2006, 13h13
  3. Soucis avec les JTables et les listener
    Par shingo dans le forum Composants
    Réponses: 2
    Dernier message: 22/02/2006, 11h51
  4. Quel listener pour l'édition d'une JTable?
    Par ®om dans le forum Composants
    Réponses: 4
    Dernier message: 11/05/2005, 21h13
  5. Selection listener dans JTable
    Par calypso dans le forum Composants
    Réponses: 3
    Dernier message: 02/08/2004, 17h56

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