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 :
puis l'implementation du listener (PopupMenuListener) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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));
Voilà, je butte la dessus depuis quelques jours, si quelqu'un peu me donner un piste, ca serait super!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
merci d'avance,
night
ps: bonne année à tous
Partager