IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

JCombobox et setSelectedIndex


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 24
    Par défaut 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 : 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));
    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
    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

  2. #2
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Je crois que c'est logique. Tu recupere le nombre de possibilité de ton label ou je ne sais quoi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int nbRestante = Integer.parseInt(this.nbRougeRestant.getText());
    or tu enleve 1 à this.nbColeurRouge.

    Pas logique, à mon que je ne comprenne pas ta logique.
    Recupere nbRestant et fait ensuite -1 dessus.

    et Ensuite tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.nbRougeRestant.setText(nbRestante+"");
    J'espere que c'est ca sinon je ne vois pas le probleme. Si ce n'est pas ca envoi moi les sources et je te le debug vite fait.

  3. #3
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 24
    Par défaut
    non, pour ce qui est du nombre de couleur restante, ca marche correctement... et sinon, ca serait un problème d'algorithme.

    j'ai testé et ca passe la ou ce devrait passer (c'est à dire sur le setSelectionItem)

    Le probleme est donc que l'index choisi 0 (pour la couleur noir) n'est pas selectionné sur l'interface (par contre rouge l'est toujours...)

    j'ai essayé d'utiliser les methodes updateUI(), repaint(), ... sur la combobox, sur la frame, rien ne marche...

    merci

  4. #4
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Ah ok. Tu as donc une frame. Et c'est la couleur de la frame qui ne se met pas à jour, c'est ca?

  5. #5
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 24
    Par défaut
    non, je vais reformuler... desolé j'ai du mal...

    En gros je cherche un petit script qui permet d'afficher dans une frame une JCombobox contenant certaines valeurs (disons "1", "2", "3", "4") et qui lors de la selection de "3" affiche un message d'erreur (disons "on ne peut pas selectionner 3") et reselectione "2" automatiquement...

    voilà, finis les histoires de couleur, c'était du détail....

    en gros mon probleme se situe au moment de la reselection de la valeur "2". le message d'erreur s'affiche correctement mais "3" reste selectionné

    merci d'avance

    ps: dsl pour la reponse tardive... mais merci de m'avoir repondu!!!

  6. #6
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Deux questions :
    - Si tu fais affiches après ton setSelectedIndex l'index selectionné de la combo, il te donne quoi ? (c'est à dire est-ce que la sélection a réellement changé et qu'il s'agit d'un problème de refresh ou est-ce que l'instruction n'a pas été prise en compte)
    - Pourquoi utiliser ce listener et pas un simple ActionListener qui à mon sens serait quand même plus simple ...

  7. #7
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 24
    Par défaut
    à mon avis ca serait plus un pb de refresh...
    mais j'ai essayé les updateUI() et repaint(), .. ca ne fonctionne pas... donc je me le demade...

    pour ce qui est du listener celui ci me parait sympa car on peut effectuer un traitement avan et apres l'apparition de la liste ce qui est plus compliquer avec l'ActionListener (maintenant c'est un choix comme un autre, si il le faut je peux changer...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JComboBox] Mmise à jour contenu
    Par java_math dans le forum Composants
    Réponses: 4
    Dernier message: 16/07/2008, 18h27
  2. JComboBox action
    Par calypso dans le forum Composants
    Réponses: 4
    Dernier message: 02/08/2004, 15h41
  3. [jcombobox]l'élément affiché lié à un autre objet
    Par szdavid dans le forum Composants
    Réponses: 3
    Dernier message: 11/05/2004, 10h17
  4. [swing][JComboBox]Problème de taille
    Par n!co dans le forum Composants
    Réponses: 8
    Dernier message: 06/03/2004, 10h53
  5. Couleur d'une JComboBox disabled
    Par ced dans le forum Composants
    Réponses: 6
    Dernier message: 06/01/2004, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo