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 :

problème avec TableModel !!!


Sujet :

Composants Java

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 70
    Points : 52
    Points
    52
    Par défaut problème avec TableModel !!!
    bonjour,
    voila j'ai 2 fenetres, une qui fait le calcul est l'autre qui reçoit le resultat des cacul pour le formater et l'affiché sur une JTable, pour cela j'ai crée une variable static de type Vector dans la fenetre des calculs qui va contenir les resultats ensuite je l'utilise dans la fenetre resultat pour créer un TableModel voila un fragement du code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Vector columnClassique=new Vector();
    columnClassique.addElement("Mois");
    columnClassique.addElement("Salaire Brut Imposable");
    columnClassique.addElement("Intérêts");
    columnClassique.addElement("IGR");
    columnClassique.addElement("Salaire Net de crédit");
    columnClassique.addElement("Participation de l'emprunteur aux bénéfices");
    Vector resultat= new Vector();
    resultat= JfrmParamètres.resultatClassique; <== MA VARIABLE STATIC
     
    TableModel jTable1Model = new DefaultTableModel(resultat,columnClassique);
    						jTable1 = new JTable();
    						jScrollPane1.setViewportView(jTable1);
    						jTable1.setModel(jTable1Model);
    hors le programme me sort des erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    java.lang.ClassCastException: java.lang.String
    at javax.swing.table.DefaultTableModel.justifyRows(Unknown Source)
    at javax.swing.table.DefaultTableModel.setDataVector(Unknown Source)
    at javax.swing.table.DefaultTableModel.<init>(Unknown Source)
    j'ai verifier le contenu du vector resultat il est bel et bien rempli!!
    et comme vous savez le constructeur DefaultTableModel accepte le type Vector.
    je ne comprends rien!!!

  2. #2
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Peux tu nous montrer le reste de ton tableModel ? L'erreur ne se situe pas dans le constructeur, mais plutot dans les méthodes de remplissage.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    Est-ce tu pourrais nous donner la ligne d'où provient cette erreur STP ?
    Et éventuellement faire une petite boucle pour affiche rle contenu du Vector resultat ?
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 70
    Points : 52
    Points
    52
    Par défaut
    j'ai verifier le contenu de mon Vector resultat il est rempli
    pour le code de remplissage :

    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
    Vector columnClassique=new Vector();
    						columnClassique.addElement("Mois");
    						columnClassique.addElement("Salaire Brut Imposable");
    						columnClassique.addElement("Intérêts");
    						columnClassique.addElement("IGR");
    						columnClassique.addElement("Salaire Net de crédit");
    						columnClassique.addElement("Participation de l'emprunteur aux bénéfices");
     
    Vector resultat= new Vector();
    resultat= JfrmParamètres.resultatClassique;
    for (int j = 0; j<resultat.size() ; j++)
    {
    System.out.println(resultat.get(j));
    }
    TableModel jTable1Model = new DefaultTableModel(resultat,columnClassique);<== voila la ligne d'ou vient l'erreur
    jTable1 = new JTable();
    jScrollPane1.setViewportView(jTable1);
    jTable1.setModel(jTable1Model);

  5. #5
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    Oui, mais justement, ton Vector et bien rempli, mais je voudrais voir si son contenu est "compatible" avec ta déclaration de TableModel...

    Affiches nous donc une partie de ta console qu'on voit quelques lignes du sus-dit Vector. (en gros facilement 20 lignes de console...)
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 70
    Points : 52
    Points
    52
    Par défaut
    voile le message d'erreurs tout entier

    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
    java.lang.ClassCastException: java.lang.String
    at javax.swing.table.DefaultTableModel.justifyRows(Unknown Source)
    at javax.swing.table.DefaultTableModel.setDataVector(Unknown Source)
    at javax.swing.table.DefaultTableModel.<init>(Unknown Source)
    at JfrmResult.initGUI(JfrmResult.java:95)
    at JfrmResult.<init>(JfrmResult.java:58)
    at JfrmParamètres.calcul(JfrmParamètres.java:364)
    at JfrmParamètres.access$9(JfrmParamètres.java:216)
    at JfrmParamètres$8.actionPerformed(JfrmParamètres.java:757)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.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.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(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)

  7. #7
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    Euh... je me suis mal fait comprendre !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (int j = 0; j<resultat.size() ; j++) 
    { 
    System.out.println(resultat.get(j)); 
    }
    C'est l'affichage de ce code que je voudrais voir... sait-on jamais

    PS: Si pour des raisons de confidentialité tu ne peux pas le montrer, vérifier bien que tout le contenu du Vector est bien ordonné, qu'il ne manque aucun élément etc...

    Eventuellement, ce que tu peux faire, c'est définir ton propre TableModel, dans lequel tu surcharge la méthode getValueAt(int row, int col), afin de pouvoir tracer plus en profondeur ton erreur.

    A priori il n'y a pas d'erreur sur le code (en tout cas je ne la vois pas !), donc il y a plus de chance que ce soit dans un autre morceau de code, ou plus probable selon moi, dans la source de données.

    Par exemple, as tu bien respecter ce "détail" -> resultat DOIT ÊTRE un vecteur de vecteur.
    public class DefaultTableModel
    extends AbstractTableModel
    implements Serializable
    This is an implementation of TableModel that uses a Vector of Vectors to store the cell value objects.
    made in Javadoc

    Donc normalement l'affichage que tu as fait (code ci-dessus) devrait t'écrire des lignes de code du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [JfrmParamètres.calcul.String@90d8ea]
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

  8. #8
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    [Apartheid] Au fait, je viens de me rendre compte qu'il y a des accents dans tes noms de classe, ça n'a peut-être aucun rapport, mais ce n'est jamais très bon pour la portabilité... [/Apartheid]
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

  9. #9
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Citation Envoyé par leminipouce
    Par exemple, as tu bien respecter ce "détail" -> resultat DOIT ÊTRE un vecteur de vecteur.
    Tout a fait, l'erreur que tu as peut venir du fait que ton Vector resultat contient des objets String au lieu d'autres objets Vector.
    Le TableModel croit avoir un Vector de Vectors, mais il trouve un Vector de String => ClassCastException.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  10. #10
    Membre actif Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 253
    Points
    253
    Par défaut
    Citation Envoyé par xavlours
    Citation Envoyé par leminipouce
    Par exemple, as tu bien respecter ce "détail" -> resultat DOIT ÊTRE un vecteur de vecteur.
    Tout a fait, l'erreur que tu as peut venir du fait que ton Vector resultat contient des objets String au lieu d'autres objets Vector.
    Le TableModel croit avoir un Vector de Vectors, mais il trouve un Vector de String => ClassCastException.
    D'où l'intérêt des generics en 1.5

  11. #11
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 70
    Points : 52
    Points
    52
    Par défaut
    CHAPEAU les mecs ça marche maintenant l'erreur été bien dans le vecteur resultat, il doit être un vecteur de Vecteur.


    MERCIiiiiiiiiiiiiiiiiiiiiii

  12. #12
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    Citation Envoyé par xxaragornxx
    D'où l'intérêt des generics en 1.5
    Tu y vois un intérêt ici ? Je connais pas trop, donc j'ai du mal à comprendre...
    Si tu as le temps de répondre, je serais heureux , sinon je me plongerai dans la doc spécifique de la 1.5
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

  13. #13
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    En 1.5 le Vector devient un Vector<Object>. Il contient en effet des Object.
    Tu peux ainsi définir :
    - Vector<String> (get te renvoie directement une String, plus besoin de cast)
    - Vector< Vector<String> >
    Ce qui te permet de vérifier à la compilation que tu ne mets pas de String dans un Vecteur destiné à recevoir des Vector<String>. En 1.4 ca se traduit toujours par un ClassCastException ... pendant l'exécution.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  14. #14
    Membre actif Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 253
    Points
    253
    Par défaut
    Citation Envoyé par xavlours
    En 1.5 le Vector devient un Vector<Object>. Il contient en effet des Object.
    Tu peux ainsi définir :
    - Vector<String> (get te renvoie directement une String, plus besoin de cast)
    - Vector< Vector<String> >
    Ce qui te permet de vérifier à la compilation que tu ne mets pas de String dans un Vecteur destiné à recevoir des Vector<String>. En 1.4 ca se traduit toujours par un ClassCastException ... pendant l'exécution.
    leminipouce >> xavlours a bien décrit le principe.

    Mais avant même la compilation, lorsque tu travailles avec un IDE comme Eclipse celui-ci t'avertira des erreurs potentielles (même si derrière ce n'est ni plus ni moins qu'une compilation)

    De plus il y a un intérêt pour la gestion de mémoire en faisant en sorte qu'il réserve l'espace mémoire adapté lors de la déclaration de ta Collection !

  15. #15
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    Hum... mnexcellent !

    Ben voilà qui nous apporte encore quelques avantages du C++. Mais que lui reste-t'il ???

    Oups, on s'oriente vers un débat si je vais par là

    Merci beaucoup les gens pour vos infos.
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

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

Discussions similaires

  1. un problème avec le tableModel !!!
    Par mehdi82 dans le forum Composants
    Réponses: 9
    Dernier message: 15/11/2005, 15h23
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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