ArrayList Java

[Fermé]
Signaler
Messages postés
7
Date d'inscription
mercredi 28 mars 2012
Statut
Membre
Dernière intervention
18 avril 2012
-
Messages postés
7
Date d'inscription
mercredi 28 mars 2012
Statut
Membre
Dernière intervention
18 avril 2012
-
Bonjour,

J'ai un arrayList qui contient des objets Matrices (que j'ai créé à partir d'une classe matrice).
J'ai dans un JComboBox une liste avec le nom de chaque matrice avec initialement l'élément 0 du comboBox qui à le nom de la matrice dans l'arrayList à l'indice 0 et ainsi de suite.

Quand j'efface un élément du comboBox (par exemple, si j'ai 3 matrice et que j'efface celle qui est en position 0), les indices du comboBox ce réorganisent pour que l'élément 1 devienne 0, l'élément 2 devienne 1, ...

Par contre, quand j'utilise la méthode remove du arrayList (pour l'élément 0 par exemple), il n'y a plus rien dans la position 0 et ce qui avait à la position 1 reste à la position 1 et ainsi de suite.

Est-il possible de faire en sorte que quand j'efface un élément du arrayList, les autres élément se "décallent" vers un indice plus petit pour qu'il n'y ait aucune indice du arrayList qui soit vide dans le but que l'indice de l'arrayList et du comboBox pointent toujours sur la même matrice?

Merci d'avance.

6 réponses

Salut,

Mais, c'est ce qui se fait avec remove non ?
(du moins avec Java Se 6)

Exemple:
import java.util.ArrayList; 

   public class ArrayListDemo4 
   { 
      public static void main(String[] args) 
      { 
         ArrayList<Object> arrL = new ArrayList<Object>(); 
       
         arrL.add ("Toto"); 
         arrL.add ("Bonjour"); 
         arrL.add ("Salut"); 
         arrL.add ("12345"); 
         arrL.add ("salut"); 
         arrL.add ("Salut"); 
         System.out.println("\nContenu de arrL: " + arrL); 
          
      // Obtenir l'indice d'un item de l'ArrayList arrL 
         boolean trouve = false; 
         Object obj; 
       
         obj = "Toto";  
         System.out.println("On recherche l'objet " + obj + ":"); 
         for(int i = 0; i<arrL.size(); i++) 
         { 
            if(arrL.get(i).equals(obj)) 
            { 
               System.out.println("item " + i + ": " + arrL.get(i) + "."); 
               arrL.remove(i); 
               trouve = true; 
            } 
         } 
         System.out.println("\nNouveau contenu de arrL:\n" + arrL); 
         if(!trouve) 
            System.out.println("L'objet " + obj + " n'existe pas...\n"); 
      } 
   } 


Ps,

Tu peux nous montrer ton code ?

Cordialement,

Dan

--Plus on apprend... plus on se rend compte qu'on ne connaît pas grand-chose.
Messages postés
7
Date d'inscription
mercredi 28 mars 2012
Statut
Membre
Dernière intervention
18 avril 2012

Voilà mon code :

Classe GestionMatrice (où il y a le arrayList) :

public static void supprimer(int matrice){
pileMatrices.add(getTabMatrices().get(matrice));
tabMatrices.remove(matrice);
FenetreMatrice.getComboBoxMat2().removeItemAt(matrice);
FenetreMatrice.getComboBoxMat().removeItemAt(matrice);
}


Classe FenetreMatrice (où il y a le comboBox) :

JButton btnSupprimer = new JButton("Supprimer");
btnSupprimer.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(comboBoxMat.getSelectedIndex() == -1){
JOptionPane.showMessageDialog(null, "Il n'y aucun élément sélectionné à supprimer!");
}else{
GestionMatrice.supprimer(comboBoxMat.getSelectedIndex());
}
}
});
btnSupprimer.setToolTipText("Supprimer la matrice courante");
btnSupprimer.setBounds(15, 65, 175, 20);
contentPane.add(btnSupprimer);

comboBoxMat = new JComboBox();
comboBoxMat.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(comboBoxMat.getSelectedIndex() >= 0){
Matrice m = GestionMatrice.getTabMatrices().get(comboBoxMat.getSelectedIndex());
pnlMatrice.setMatrice(m);
}
}
});

Ça plante avec un "outOfBounds" à l'avant dernière ligne du code (où je crée Matrice m) mais seulement quand j'efface les matrices dans l'ordre qu'ils ont été créé et seulement quand je suis rendu à l'avant dernière. Exemple : je crée matrice a, b, c, d, e, f puis j'enlève a, b, c, d, e et ça plante rendu à "e".

Merci d'avance.
Messages postés
7
Date d'inscription
mercredi 28 mars 2012
Statut
Membre
Dernière intervention
18 avril 2012

J'ai encore mon problème alors je fais un petit "up".
Messages postés
16410
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 octobre 2021
2 903
Donne le code complet, que l'on puisse faire un copier-coller et tester directement, parce qu'avec un morceau de code on ne va pas bien loin...
Messages postés
7
Date d'inscription
mercredi 28 mars 2012
Statut
Membre
Dernière intervention
18 avril 2012

Au lieu de copier mes classes au complet (j'en ai beaucoup!) J'ai mis mon projet en .jar . Vous pouvez le télécharger ici : http://eleves.cmaisonneuve.qc.ca/e1038950/4_AppliMath.jar

Merci d'avance.

ps: Seulement le module "matrice" est commencé et je sais qu'il y a d'autre bug que celui qui fait l'objet de ma question...
Messages postés
7
Date d'inscription
mercredi 28 mars 2012
Statut
Membre
Dernière intervention
18 avril 2012

up?