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 :

Problème jCombobox : Question métaphysique.


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 15
    Points
    15
    Par défaut Problème jCombobox : Question métaphysique.
    Bonjour mes chers paires développeurs,

    je suis confronté a un souci jusqu'a la jamais rencontré dans un autre langage

    j'ai une jCombobox dont je remplis le contenu par le code via l'instruction addItem.

    je veux récuperer le changement de selection du contenu de ma combo, à savoir une fois ma fenetre lancée et la combo remplie si je click quelque part, que ça fasse quelquechose :p

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            modelComboMilieuType = new DefaultComboBoxModel();
            modelComboMilieuType.addElement("< Ajouter un élément >");
            modelComboMilieuType.addElement("Twingo");
            modelComboMilieuType.addElement("Pastis");
            modelComboMilieuType.addElement("Courgette");
            modelComboMilieuType.addElement("Michel");
     
            comboMilieuType.setModel(modelComboMilieuType);
     
            // si je mets pas ça dès le démarrage de la form il selectionne directement
            // le premier élément, or je ne veux pas qu'il le selectionne des le départ
            comboMilieuType.setSelectedIndex(-1);
    mon problème est que si je ne fais pas ce setSlectedIndex(-1) il selectionne d'office le premier élément, et si je fais ça, l'événement se lance même lors du chargement de la combo en éléments

    comment on peut faire pour que ça ne fasse pas cette action lors du chargement de la combo. Et question subsidiaire pourquoi lors du chargement du combo par le code il déclenche cet événement... :p

  2. #2
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    912
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 912
    Points : 1 371
    Points
    1 371
    Par défaut
    Logique: quand tu charge, tu ajoutes des élements ce qui déclenche ton event.
    La solution est simple: retire tous les listeners avant le chargement et remets les après.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    c'est une réponse logique certes, mais le code lié aux listeners est généré par NetBans, du coup ce n'est pas moi qui gère ces déclarations de listeners

    sinon j'avais pensé a regarder la source de l'événement, comme voior si c'est la souris qui déclenche cet événement, mais ça me parait une bien lourde mise en place pour si peu...

    devoir tester à chaque fois si l'événément a été généré par la souris ou pas avant de faire mon traitement lié à cet événément lancé.

  4. #4
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    ajoute un flag (Boolean) qui precise si c'est en chargment ou pas.
    une fois que tu as fini de charger tu change sa valeur.

    dans l'ecouteur tu y colle au debut un petit :

    if (flag){
    ....}


    Mais il suffirait de decaler le moment ou sont mit les ecouteurs...
    ca serait quand meme mieux.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    Je suis tout à fait d'accord avec vous au niveau de la déclaration des listeners, si je remplis ma combo avant de créer le listener ça passe pour ce coup ci (si toutefois quelqu'un sait comment modifierle code généré par NetBeans )

    Mais dans ma combo la première ligne est <Ajouter un élément> suivi des autres éléménts deja présent. (Car les éléments présents dans la combo correspondant a une série de libellés présents dans une table d'une BDD, il doit pouvoir ajouter un élément qui ne figurerait pas dans la base de données)


    Donc si quelqu'un clic sur cet élément (qui a pour index 0 je rappèle), je lui ouvre une petite JDialog pour lui demander quoi ajouter (un jTextField, et 2 bouttons Valider et Annuler), et quand il valide, je dois re charger la combo avec ce nouvel élément.

    A ce moment la, ça va me re lancer l'événement que je veux pas qu'il me lance...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    Bon j'ai trouvé une solution qui ne me satisfait qu'a moitié... m'enfin

    j'ai changé d'événement de déclenchement de mon action

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        private void comboMilieuTypePopupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) {                                                             
    // TODO add your handling code here:
            if(comboMilieuType.getSelectedIndex() != (-1)){
                if(comboMilieuType.getSelectedItem().equals("< Ajouter un élément >")){
     
                    AjoutElement addEl = new AjoutElement();
                    addEl.setTitle("");
                    addEl.setModal(true);
                    addEl.setLocationRelativeTo(this);
                    addEl.setVisible(true);            
                }
            }
        }
    quand le popup menu de ma combo se ferme, je regarde l'item qui est selectionné à ce moment la, et du coup je peux faire ce que je veux... mais bon disons que c'est du bricolage plutôt que de lancer l'événement quand il faudrait :p

  7. #7
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    912
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 912
    Points : 1 371
    Points
    1 371
    Par défaut
    Comme quoi les environnements qui font une partie du boulot à ta place, ça fini toujours pas être chiant.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    Plus ou moins..

    dans le cas du Visual Studio, je trouve que c'est pas mal br**lé

    En revanche dès qu'il s'agit de faire du Java il faut éviter...mais bon c'est quend même un peu plus agréable de pouvoir mettre des contrôles et de coder derrière plutôt que les déclarer à la mimine

Discussions similaires

  1. [SWING] Problème JCombobox
    Par alain123 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 13/11/2007, 16h59
  2. Problème et questions sur un calcul de distance
    Par ale2000 dans le forum Traitement d'images
    Réponses: 7
    Dernier message: 11/09/2007, 20h33
  3. Petit Problème JComboBox
    Par EdHunter dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 15/06/2007, 17h50
  4. Sessions, variables, problèmes et questions
    Par gloubi dans le forum Langage
    Réponses: 2
    Dernier message: 24/02/2007, 10h46
  5. Firbird / IB Expert / MySQL : problèmes et questions
    Par DragOr dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/12/2006, 11h56

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