Mise à Jour d'une JComboBox

moutonjr Messages postés 65 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 5 juin 2012 - 28 mai 2012 à 02:14
 Utilisateur anonyme - 29 mai 2012 à 12:26
Bonjour à tous!
Je suis confronté à un problème d'affichage d'une JComboBox de swing : je veux enlever des éléments de celle-ci, et j'ai vraiment tout utilisé : tous les rafraichissements, toutes les définitions (et les modèles) mais je ne parviens pas à rafraichir l'affichage...

Je vous joins le code : C'est une JCombobox qui met à jour des mises de Belote. (150, 160, Capot, Capot beloté...)
Définition :
String[] mises = {"80", "90", "100", "110", "120", "130", "140", "150", "160", "Capot", "Capot belote"};
cbMises = new JComboBox();
cbMises.setModel(new DefaultComboBoxModel(mises));
cbMises.setSelectedIndex(0);
cbMises.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JComboBox jcmbType = (JComboBox) e.getSource();
cbMises.setSelectedIndex(jcmbType.getSelectedIndex());}}); // fallacieux mais fonctionnant...

	public void MAJMise(Mise lastMise){ // TODO marche pas

ArrayList<String> mises = new ArrayList<String>();
int misesugg = lastMise.getValeur();
while(misesugg < 170){
misesugg += 10;
mises.add("" + misesugg);
}
mises.add("Capot");
mises.add("Capot belote");
cbMises.removeAllItems();
cbMises.setModel(new DefaultComboBoxModel(mises.toArray()));
cbMises.setSelectedIndex(0);
cbMises.updateUI();
cbMises.update(getGraphics());
cbMises.repaint();
cbMises.paint(getGraphics());
// panMise : le JPanel conteneur :
this.panMise.repaint();
this.panMise.revalidate();	
panMise.updateUI();
panMise.update(getGraphics());
}



Comme quoi, vraiment rien n'est impossible...

6 réponses

Utilisateur anonyme
28 mai 2012 à 23:11
Salut,

Est-ce que tu te prends des exceptions ? Ta variable servant à la JComboBox n'est pas final ?


--
Pylouq
(Lire le Réglement n'a jamais tué personne, au pire ça a instruit des gens.)
0
moutonjr Messages postés 65 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 5 juin 2012
29 mai 2012 à 00:56
Malheureusement, aucun des deux : pas d'erreur (je pourrais voir avec try/catch mais bon, s'il m'a pas insulté en console, je suppose que ça va), t non, elle n'est pas final. J'ai tout aussi bien essayé
cbMises = new JComboBox(mises.toArray());

Mais guère de résultats probants...

Merci pour la réponse!

Comme quoi, vraiment rien n'est impossible...
0
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
29 mai 2012 à 08:49
Normalement, une combo se met à jour toute seule, pas besoin de rafraichir l'affichage... une fois le modèle changé, un event est lancé et le GUI se rafraichit... du moi pour la combo...

J'avoue ne pas comprendre ce que tu cherches à rafraichir...
0
moutonjr Messages postés 65 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 5 juin 2012
29 mai 2012 à 11:11
En fait, j'ai un bouton à côté qui fait des tours de mise d'IAs à la belote. Quand vient le tour de l'humain, il ne doit pas avoir le choix de miser moins, il ne peut que miser plus. Donc j'aimerais enlever les mises de la JComboBox les éléments obsolètes ("80", "90" si la mise actuelle est de 90 par exemple).

Pratiquement, je tente de passer par une redéfinition de ma JComboBox (j'ai aussi essayé par remove(Object o) sans succès).
Je cherche à rafraîchir le contenu de la JComboBox...


---
Comme quoi, vraiment rien n'est impossible...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
29 mai 2012 à 11:48
comme ça, je te dirai de déjà vérifier que ton modèle est bien modifié...
s'il l'est, alors c'est vraiment au niveau du refresh du GUI...
0
Utilisateur anonyme
29 mai 2012 à 12:26
J'allais proposer la même chose que cormandyr.


--
Pylouq
(Lire le Réglement n'a jamais tué personne, au pire ça a instruit des gens.)
0
Rejoignez-nous