[JAVA] Doublons Jcombobox

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
A voir également:

3 réponses

choubaka Messages postés 39986 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
salut

comment et avec quoi remplis-tu ce JComboBox ..

?????
0
kiwi2910 Messages postés 10 Statut Membre 1
 
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
 
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 Statut Membre 1
 
D'accord merci je vais essayer de mettre ça en oeuvre.
0
kiwi2910 Messages postés 10 Statut Membre 1
 
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