ComboBoxModel problème de sélection
Bonjour à tous,
Je cherche a écrire un model de JComboBox ou je peux a tous moment supprimer les items et ajouter d'autres items.
Le problème vient que je ne peux pas toujours sélectionner un item dans la liste déroulante.
Si je clique sur un item, il ne me le sélectionne pas toujours!
Voici ma classe Model:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| public class MyComboBoxModel extends AbstractListModel implements ComboBoxModel {
private ArrayList<String> liste = new ArrayList<String>();
private String selection;
public MyComboBoxModel(){
}
@Override
public void addListDataListener(ListDataListener arg0) {
// TODO Auto-generated method stub
}
@Override
public Object getElementAt(int index) {
// TODO Auto-generated method stub
return liste.get(index);
}
@Override
public int getSize() {
// TODO Auto-generated method stub
return liste.size();
}
@Override
public void removeListDataListener(ListDataListener arg0) {
// TODO Auto-generated method stub
}
@Override
public Object getSelectedItem() {
// TODO Auto-generated method stub
return selection;
}
@Override
public void setSelectedItem(Object anObject) {
selection = (String) anObject;
}
public void addItem(String liste2){
liste.add(liste2);
this.fireIntervalAdded(this, getSize(), getSize());
}
public void removeAllItems() {
liste.clear();
liste = new ArrayList<String>();
selection="";
this.fireIntervalRemoved(this, 0, getSize());
}
public ArrayList<String> getListe() {
return liste;
}
} |
Voici l'init de la liste déroulante:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| //Liste déroulante
membre_masquer= new JComboBox(new MyComboBoxModel());
membre_masquer_model= (MyComboBoxModel)membre_masquer.getModel();
membre_masquer.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event) {
iSystem.out.println("test clique liste déroulante"+membre_masquer_model.getSelectedItem()+" | "+membre_masquer.getSelectedIndex());
if(membre_masquer.getSelectedIndex()>=0){
id_membre = Integer.valueOf((String) membres_masquer.get(membre_masquer.getSelectedIndex()).get(0));
System.out.println("test clique liste déroulante"+id_membre);
}
}
}); |
Quand je clique sur un item j'ai dans la console:
membre_masquer.getSelectedIndex() = -1
Donc ça me le sélectionne pas.
Voici comment je rafraîchi la liste:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| System.out.println("CLEAR");
membre_masquer_model.removeAllItems();
membres_masquer.clear();
membres_masquer=new ArrayList<ArrayList<Object>>();
for(int x=0;x<membres_connecter.size();x++){
membres_masquer.add(x, new ArrayList<Object>());
membres_masquer.get(x).add(0, String.valueOf(membres_connecter.get(x).getId()));
membres_masquer.get(x).add(1, membres_connecter.get(x));
membre_masquer_model.addItem(membres_connecter.get(x).getNom()+" "+membres_connecter.get(x).getPrenom());
System.out.println("ADD liste : "+membres_connecter.get(x).getNom()+" "+membres_connecter.get(x).getPrenom());
} |
Mon problème vient de la sélection d'un item.
J'ai l'impression que j'ai des problème lorsque:
-J'appel membre_masquer_model.removeAllItems();
-Je clique sur l'item déjà sélectionner auparavant
J'ai cherché des exemples de model de JComboBox avec ajout ou suppression d'item sur le net, mais je n'ai pas trouvé d’exemples.
Merci pour votre aide ;)