JCombobox et setSelectedIndex
Bonjour ce problème va paraître tres basic pour certain (enfin j'espère...) mais j'ai beau avoir lu et essayé de nombreuse solution sur les forums, je reste bloqué!!
dans une JTable, j'ai des cellules qui contiennent des JCombobox avec des couleurs. Or un utilisateur ne peut selectionner qu'un certain nombre de fois la même couleur (disons 3 fois) et donc, si il essaye de selectionner pour la 4eme fois rouge, un message s'affiche et la JCombobox devrait se remettre sur la couleur par default... mais ca ne marche pas...
voici le code pour illustrer mon problème :
insertion de la JCombobox dans la table :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
Object[] couleurs = metier.recupererCouleur();
//la JTable
lesCouleurs = new JTable(new CouleurTableModel(reserve.getLesCouleur(), couleur[0]));
TableColumn col = lesCouleurs.getColumnModel().getColumn(3);
//LA JCombobox
couleursCombo = new JComboBox(couleurs);
couleursCombo.setEditable(false);
couleursCombo.setSelectedIndex(0);
couleursCombo.addPopupMenuListener(this);
col.setCellEditor(new DefaultCellEditor(couleursCombo)); |
puis l'implementation du listener (PopupMenuListener) :
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
|
public void popupMenuWillBecomeInvisible(PopupMenuEvent arg0) {
JComboBox combo = (JComboBox)arg0.getSource();
//on retire un si la couleur choisie est rouge
if(new CouleursExistantes().estCouleurRouge((Color)combo.getSelectedItem()))
this.nbColeurRouge -= 1;
//je recupere le nombre de rouge possible a afficher
int nbRestante = Integer.parseInt(this.nbRougeRestant.getText());
//si il n'y en a plus j'affiche le message d'erreur et je met la couleur par default
if(nbRestante <= 0){
JOptionPane.showMessageDialog(this,"Vous n'avez plus de couleurs rouge" );
combo.setSelectedIndex(0);// je reselectionne noir
//mais ca ne fonctionne pas!!!!
}else
this.nbRougeRestant.setText(nbRestante+this.nbColeurRouge +"");
this.nbColeurRouge = 0;
}
public void popupMenuWillBecomeVisible(PopupMenuEvent arg0) {
//on ajoute 1 au compteur si la couleur precedente etait deja rouge
JComboBox combo = (JComboBox)arg0.getSource();
if(new CouleursExistantes().estCouleurRouge((Color)combo.getSelectedItem()))
this.nbColeurRouge += 1;
} |
Voilà, je butte la dessus depuis quelques jours, si quelqu'un peu me donner un piste, ca serait super!
merci d'avance,
night
ps: bonne année à tous