ArrayList Java

Fermé
jaja360 Messages postés 7 Date d'inscription mercredi 28 mars 2012 Statut Membre Dernière intervention 18 avril 2012 - 28 mars 2012 à 22:07
jaja360 Messages postés 7 Date d'inscription mercredi 28 mars 2012 Statut Membre Dernière intervention 18 avril 2012 - 18 avril 2012 à 00:36
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.

A voir également:

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.
0
jaja360 Messages postés 7 Date d'inscription mercredi 28 mars 2012 Statut Membre Dernière intervention 18 avril 2012
12 avril 2012 à 18:23
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.
0
jaja360 Messages postés 7 Date d'inscription mercredi 28 mars 2012 Statut Membre Dernière intervention 18 avril 2012
15 avril 2012 à 05:39
J'ai encore mon problème alors je fais un petit "up".
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
15 avril 2012 à 11:43
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jaja360 Messages postés 7 Date d'inscription mercredi 28 mars 2012 Statut Membre Dernière intervention 18 avril 2012
15 avril 2012 à 23:15
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...
0
jaja360 Messages postés 7 Date d'inscription mercredi 28 mars 2012 Statut Membre Dernière intervention 18 avril 2012
18 avril 2012 à 00:36
up?
0