[JAVA] Doublons Jcombobox
kiwi2910
Messages postés
10
Statut
Membre
-
kiwi2910 Messages postés 10 Statut Membre -
kiwi2910 Messages postés 10 Statut Membre -
Bonjour,
je souhaite retirer les doublons dans une JComboBox.
Pourriez vous m'aider?
Merci
je souhaite retirer les doublons dans une JComboBox.
Pourriez vous m'aider?
Merci
Configuration: Windows XP Firefox 2.0.0.2
3 réponses
-
salut
comment et avec quoi remplis-tu ce JComboBox ..
?????
-
Salut!
Si tu ne veux pas de doublons, le mieux est d'utiliser un java.util.Set plutôt qu'une java.util.List pour stocker tes données.
Je pense que ton problème vient de là.
Teste la classe ci-dessous qui utilise 2 JComboBox.
Le première extrait les données à afficher d'un Set, l'autre d'une List.
Tu peux remarquer que malgré qu'on a ajouté plusieurs fois la même donnée au Set, elle n'apparaît qu'une seule fois.
/* * Created on 27-févr.-2007 * Author: HackTrack */ package comboDoubleEntriesRemove; import java.awt.Dimension; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel; public class SingleEntryComboTester extends JFrame { private JComboBox combo1; private JComboBox combo2; private DefaultComboBoxModel comboModel1; private DefaultComboBoxModel comboModel2; public SingleEntryComboTester() { super("Demo"); initialize(); } private void initialize() { setDefaultCloseOperation(EXIT_ON_CLOSE); JPanel panel = new JPanel(); panel.setPreferredSize(new Dimension(320,200)); comboModel1 = new DefaultComboBoxModel(); comboModel2 = new DefaultComboBoxModel(); combo1=new JComboBox(); combo2=new JComboBox(); combo1.setModel(comboModel1); combo2.setModel(comboModel2); panel.add(combo1); panel.add(combo2); getContentPane().add(panel); } public void setFirstComboData(Set data) { comboModel1= new DefaultComboBoxModel(data.toArray()); combo1.setModel(comboModel1); validate(); } public void setSecondComboData(List data) { comboModel2 = new DefaultComboBoxModel(data.toArray()); combo2.setModel(comboModel2); } public static void main(String[] args) { SingleEntryComboTester tester = new SingleEntryComboTester(); tester.pack(); tester.setVisible(true); Object[] data = new String[]{"Hack","Track","Chouba","Chouba","Hop!","Ka","Track"}; Set set = new HashSet(); List list = new ArrayList(); for(Object o: data){ list.add(o); set.add(o); } tester.setFirstComboData(set); tester.setSecondComboData(list); } }
;-)
HackTrack -
En fait je ne vois pas trop comment adapter celà à ma lecture de fichier. Pour obtenir tous les noms d'option à chaque ligne du fichier je boucle et je récupère ce nom d'option dans un String opt=tok.nextToken(). je vous montre ce qui marchait jusqu'à maintenant avec les doublons:
public void getOption() throws IOException{ try{ BufferedReader lecture=new Bufferedreader (new FileReader("D:/IUT/Liste.txt")); while(true){ String ligne=lecture.readLine(); if(ligne==null)break; StringTokenizer tok=new StringTokenizer (ligne, ";"); String opt=tok.nextToken(); //on récupère l'option JCBListeOption.additem(opt); //on ajoute au Jcombobox } lecture.close(); } catch(NoSuchElementException e){} } }