ArrayList Java

jaja360 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
jaja360 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -
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

Utilisateur anonyme
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
J'ai encore mon problème alors je fais un petit "up".
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
up?
0