A voir également:
- [JAVA] Doublons Jcombobox
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Doublons photos - Guide
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
3 réponses
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.
;-)
HackTrack
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){}
}
}
J'extrait les options du fichier grâce à la classe Tokenizer et ses délimiteurs pour les placer dans le JCombobox.