[JAVA] Doublons Jcombobox

Fermé
kiwi2910 Messages postés 10 Date d'inscription dimanche 25 février 2007 Statut Membre Dernière intervention 3 mars 2007 - 26 févr. 2007 à 18:39
kiwi2910 Messages postés 10 Date d'inscription dimanche 25 février 2007 Statut Membre Dernière intervention 3 mars 2007 - 27 févr. 2007 à 18:37
Bonjour,
je souhaite retirer les doublons dans une JComboBox.
Pourriez vous m'aider?
Merci
A voir également:

3 réponses

choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
27 févr. 2007 à 12:58
salut

comment et avec quoi remplis-tu ce JComboBox ..

?????
0
kiwi2910 Messages postés 10 Date d'inscription dimanche 25 février 2007 Statut Membre Dernière intervention 3 mars 2007 1
27 févr. 2007 à 18:18
En fait je possède un fichier texte qui contien à chaque ligne un nom, un prénom et une option.
J'extrait les options du fichier grâce à la classe Tokenizer et ses délimiteurs pour les placer dans le JCombobox.
0
Utilisateur anonyme
27 févr. 2007 à 16:52
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
0
kiwi2910 Messages postés 10 Date d'inscription dimanche 25 février 2007 Statut Membre Dernière intervention 3 mars 2007 1
27 févr. 2007 à 18:19
D'accord merci je vais essayer de mettre ça en oeuvre.
0
kiwi2910 Messages postés 10 Date d'inscription dimanche 25 février 2007 Statut Membre Dernière intervention 3 mars 2007 1
27 févr. 2007 à 18:37
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){}
        }
}

0