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 -
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.
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:
- ArrayList Java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
6 réponses
Salut,
Mais, c'est ce qui se fait avec remove non ?
(du moins avec Java Se 6)
Exemple:
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.
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.
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.
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.
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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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...
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...