Erreur lors d'une mise à jour dans une JTable

cs_LpG18 Messages postés 3 Date d'inscription samedi 13 mai 2006 Statut Membre Dernière intervention 17 avril 2008 - 15 avril 2008 à 17:28
cs_LpG18 Messages postés 3 Date d'inscription samedi 13 mai 2006 Statut Membre Dernière intervention 17 avril 2008 - 17 avril 2008 à 09:19
Bonjour, je suis actuellement étudiant et je dois faire un projet comprenant des JTables. Je cherche déséspérement la solution mais je trouve pas !!!!!!

Tout d'abord je recherche mes données sur une base de donnée MySQL puis je les stockes dans un Vector. Et j'affiche mes données de la JTable via ce Vector.
Chaque ligne de la JTable représente un élément de mon Vector ainsi lorsque je double clique sur une ligne j'ai les informations détaillées qui sont stockés dans mon vector jusqu'à la tout va bien.

Mon probleme se situe lorsque je rajoute un nouvel élement dans mon tableau.
Il me l'ajoute correctement dans ma base de donnée ainsi que dans mon vector et il apparait également dans ma JTable.

Mais lorsque je double clique sur la nouvelle ligne il me met une erreur :

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 6
        at java.util.Vector.get(Vector.java:694)
        at projet.SelectionListerner_Techniciens.valueChanged(SelectionListerner_Techniciens.java:29)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:167)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:137)
        at javax.swing.DefaultListSelectionModel.setValueIsAdjusting(DefaultListSelectionModel.java:668)
        at javax.swing.plaf.basic.BasicTableUI$Handler.setValueIsAdjusting(BasicTableUI.java:929)
        at javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(BasicTableUI.java:1140)
        at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)
        at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
        at java.awt.Component.processMouseEvent(Component.java:6041)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
        at java.awt.Component.processEvent(Component.java:5806)
        at java.awt.Container.processEvent(Container.java:2058)
        at java.awt.Component.dispatchEventImpl(Component.java:4413)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
        at java.awt.Container.dispatchEventImpl(Container.java:2102)
        at java.awt.Window.dispatchEventImpl(Window.java:2440)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

Mon programme est fait de la manière suivante :

public static void liste()
    {
/*********************** Partie ou je récupère les element et les met dans un vector *************************/
      liste_tech = new Vector();
     
      Traitement_R_ListeTech traitement = new Traitement_R_ListeTech(liste_tech,"LISTE");
      traitement.Traitement();
     
      MTable = new Liste_Techniciens_TableModel(Traitement_R_ListeTech.listeTechnicien(),titre_liste_C);
      TAB = new JTable(MTable);
      TAB.setAutoCreateRowSorter(true);
     
      TAB.setPreferredScrollableViewportSize(new Dimension(270,150));
      scrollpane= new JScrollPane(TAB,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
      pane.add(scrollpane);

/********************** Partie qui gere le double et qui m'affiche les détail *********************************/

      listener = new SelectionListerner_Techniciens(TAB,liste_tech);
      TAB.getSelectionModel().addListSelectionListener(listener);
      TAB.addMouseListener(new MouseAdapter()
      [mailto:{@Override {@Override]
                public void mouseClicked(MouseEvent e)
                {
                    if(e.getClickCount()>=2)
                    {
                  Reference = SelectionListerner_Techniciens.getReference();
                  Modification_tech info = new Modification_tech(Reference);
                  info.setVisible(true);
                    }
                   
                }});
      }

Voici le code qui me fait le rafraichissement de ma JTable :

public static void liste_rafraichissement()
    {
      liste_tech = new Vector();
       
      Traitement_R_ListeTech traitement = new Traitement_R_ListeTech(liste_tech,"LISTE");
      traitement.Traitement();
     
      MTable.setData(liste_tech);
      TAB.setModel(MTable);      
    }

Mon programme fonctionne correctement si je ferme la JFram ou se situe le code ci-dessous puis la réouvre. Il me retrouve correctement les informations

J'espère que j'ai été suffisament clair pour que vous comprenez ou se situe mon problème :s ...

4 réponses

uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
16 avril 2008 à 07:22
L'erreur se produit dans SelectionListerner_Techniciens. Serait-il possible qu'il n'accède pas au bon Vector, c.à d. au nouveau Vector actualisé??
0
cs_LpG18 Messages postés 3 Date d'inscription samedi 13 mai 2006 Statut Membre Dernière intervention 17 avril 2008
16 avril 2008 à 09:33
Bonjour,

tout d'abord merci de m'avoir répondu.

Effectivement dans ma méthode liste_rafraichissement je n'appelle plus la SelectionListener mais comment faut-il proceder à ce moment la ?

public static void liste_rafraichissement()
    {
      liste_tech = new Vector();
       
      Traitement_R_ListeTech traitement = new Traitement_R_ListeTech(liste_tech,"LISTE");
      traitement.Traitement();
     
      MTable.setData(liste_tech);
      TAB.setModel(MTable);    

      listener = new SelectionListerner_Techniciens(TAB,liste_tech);
     TAB.getSelectionModel().addListSelectionListener(listener);
  
    }

J'ai essayé de rajouter les deux dernières ligne, ca marche il trouve la référence et m'affiche les détails lors de mon double clique mais me met toujours une erreur...
Je pense que sa doit être une ptite erreur bête mais je trouve pas ...

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 9

Une petite idée svp ??
0
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
16 avril 2008 à 23:23
> java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 9

Les lignes "java." revoient vers des classes java standard. Ce qui nous intéresse surtout, c'est la ligne "projet." , ou est-ce qu'il y en a pas?
0
cs_LpG18 Messages postés 3 Date d'inscription samedi 13 mai 2006 Statut Membre Dernière intervention 17 avril 2008
17 avril 2008 à 09:19
Voici l'erreur qu'il me met :

at projet.SelectionListerner_Techniciens.valueChanged(SelectionListerner_Techniciens.java:28)

Une petite idée ? Parce que je suis completement en panne sèche d'idée sur ce coup la ...
0
Rejoignez-nous