[JAVA] Doublons Jcombobox

Bonjour,
je souhaite retirer les doublons dans une JComboBox.
Pourriez vous m'aider?
Merci
Configuration: Windows XP
Firefox 2.0.0.2

3 réponses

  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){}
            }
    }
    
    
    1. 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
      1. D'accord merci je vais essayer de mettre ça en oeuvre.
    2. Modérateur
      salut

      comment et avec quoi remplis-tu ce JComboBox ..

      ?????
      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.