2016-09-23 2 views
1

J'ai un problème avec mon code. J'ai un tableau de chaînes multidimensionnel [] [] et je veux en créer des listes. Donc pour chaque élément array [], je veux une nouvelle liste avec ses valeurs. Donc, par exemple, j'avais 4 listes. Liste 1 chapeau 3 valeurs, liste 2 a 1 valeur, liste 3 a 4 valeurs et liste 4 a 2 valeurs. Cela a bien fonctionné quand je viens d'utiliser JList. J'y suis pour chaque valeur du tableau toute sa valeur .:Comment créer plusieurs listes J avec des valeurs différentes avec DefaultListModel

protected static JComponent getButtonCluster() { 
    contentPanel.removeAll(); 
    contentPanel.setLayout(new GridLayout(0,2, 5, 5)); 
    contentPanel.setBorder(new EmptyBorder(10,0,0,0)); 
    for (int i=0; i < StringArray.length; i++) { 
     listbox = new JList(StringArray[i]); 
     contentPanel.add(listbox); 
    } 
    return contentPanel; 
} 

Mais maintenant, je devais changer de seulement JLists à DefaultListModel parce que je veux changer les valeurs en cliquant sur les valeurs. Et maintenant toutes les listes ont toutes les valeurs du tableau. Donc, les 4 boîtes ont 10 éléments. Comment puis-je résoudre mon problème pour que chaque liste ait ses propres valeurs?

+0

Je vous vois édité votre publication depuis que j'ai posté ma réponse, mais ma réponse est toujours valide. Le 'nouveau DefaultListModel ();' est en dehors de la boucle donc vous partagez une seule instance du modèle parmi tous vos objets JList. –

Répondre

0

Auparavant, vous créiez un new JList à chaque passage dans votre boucle. Dans votre nouveau code, vous ne créez pas un modèle new avec chaque passage dans la boucle, donc vous ajoutez simplement plus au modèle existant à chaque fois.

+0

Vous avez raison. Comment je ne pouvais pas voir ça. Merci! :) – asgart

+0

Il est facile d'oublier des choses comme ça parfois. Heureux d'avoir pu aider :) –