2017-03-12 1 views
-1

J'ai un List qui stocke le objects personnalisé du type de catégorie. Ce List est dans la classe Control. Il n'y a aucun problème à remplir le List, cela fonctionne comme prévu. Le problème se pose lorsque j'appelle la méthode populateComboBox() qui se trouve dans la classe View.JComboBox affiche des copies du même objet stockées dans une liste JAVA

Le problème: la première fois la méthode populateComboBox() est invoquée, les JComboBox affiche tous les objets du List. La deuxième fois populateComboBox() méthode est appelée, le JComboBox affiche des copies des objets en double.

Exemple si je le dit POPULATE List avec deux objects de type Catégorie (permet de les nommer C1 & C2) et appeler la méthode populateComboBox(), les JComboBox affiche C1C2. Lorsqu'il est invoqué la deuxième fois, il affiche C1C2C1C2. La troisième fois, C1C2C1C2``C1C2 et ainsi de suite ...

Voici le contenu de classe de la classe Catégorie:

public class Category 
{ 
    private String catName; 

    public Category() 
    { 

    } 

    public Category(String str) { 
     this.catName = str; 
    } 


    public String getCatName() 
    { 
     return catName; 
    } 


    @Override 
    public String toString() 
    { 
     return catName; 
    } 
} 

Voici une partie de ma classe de contrôle:

public final class Control 
{ 
    private static List<Category> categoryList = new ArrayList<>(); 
    public static List<Category> getCatList() 
    { 
     return categoryList; 
    } 
} 

Voici le contenu de la méthode populateComboBox() dans la classe de vue:

{ 
    List<Category> catList = Control.getCatList(); 
    for(Category cat: catList) 
     { 
      selectCatComboBox.addItem(cat); 
     } 
     addItemDialog.setVisible(true); 
} 
+0

@AndrewThompson J'ai essayé de garder les choses au minimum. –

Répondre

1

Vous pouvez utiliser:

selectCatComboBox.removeAllItems(); 

avant de commencer à ajouter de nouveaux éléments.

+0

Merci beaucoup pour votre réponse rapide. Ça a marché!! –