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] Problème avec un événement


Sujet :

AWT/Swing Java

  1. #1
    Membre habitué Avatar de cysboy
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 221
    Points : 168
    Points
    168
    Par défaut [JComboBox] Problème avec un événement
    Bonjour à toutes et tous,

    Voilà, j'ai un soucis avec mes JComboBox, ou plutôt avec leurs événements...
    Disons que j'ai une BDD avec une table client et que je souhaiterais afficher mes clients! Jusque là no problemo...

    Mais maintenant, dans mon interface graphique, j'ai une combo qui contient tous les noms client lors de son chargement, mais aussi un JTextField et un bouton ou l'on pourra dégrossir la recherche... Si je tape "a" puis ok je veux maintenant tous les noms client qui commence pa "A" dans ma combo.

    Mon soucis arrive maintenant:
    Lorsque je clic sur mon bouton et que je met à jours ma comboBox, un événement est créé au premier enregistrement dans ma combo.
    Lorsque le programme passe la première fois dans ma boucle for (voir code plus bas) un événement en rapport avec ma combo est créé...

    Alors que je souhaiterais que l'événement ne sois créé et géré que lorsque on choisi un item dans ma combo... normal!

    Après constatation, j'ai essayer tous les types d'événements (MouseEvent, FocusEvent...) et le résultat en reste inchangé...

    Voici donc mon (morceau de) code:

    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
    26
    27
    28
    29
    30
    31
    32
     
     jl_titre_cli = new JLabel(
                        "                             Modification des données clients");
                jl_titre_cli.setFont(police);
                jl_titre_cli.setForeground(Color.blue);
                jl_titre_cli.setPreferredSize(new Dimension(900, 100));
                pan3.add(jl_titre_cli);
     
                search = new JLabel(
                        "Recherche rapide. Tapez les premières lettres du nom du client");
                pan3.add(search);
     
                jtf_search = new JTextField();
                jtf_search.setPreferredSize(new Dimension(200, 25));
                pan3.add(jtf_search);
     
                jb_filtrer = new JButton("Filtrer la recherche");
                jb_filtrer.addActionListener(this);
                pan3.add(jb_filtrer);
     
                jl_nom_cli = new JLabel("Nom du client à modifier");
                jl_nom_cli.setPreferredSize(d7);
                jl_nom_cli.setFont(police2);
                pan3.add(jl_nom_cli);
     
                bdd.connect();
                jcb_nom_cli = new JComboBox(bdd.selectNom(
                        "SELECT nom FROM client ORDER BY nom"));
     
                jcb_nom_cli.addActionListener(this);
     
                bdd.close();
    Et la méthode actionPerformed:

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
     
      public void actionPerformed(ActionEvent e) {
     
            //MIS A JOUR OU SUPPRESSION CLIENT
            //----------------------------------------------------------------------
     
            if (e.getSource() == jb_filtrer) { //Filtrer la recherche
                String str = jtf_search.getText() + "%";
                jcb_nom_cli.removeAllItems();
     
                bdd.connect();
                String[] tab = bdd.selectNom(
                        "SELECT nom FROM client WHERE nom LIKE '" +
                        str + "'", str);
                bdd.close();
     
                for (int i = 0; i < tab.length; i++) {
                    //C EST AU PREMIER TOUR DE BOUCLE QUE L EVENEMENT
                    //EN RAPPORT AVEC MA COMBO EST CREE
                    jcb_nom_cli.addItem(tab[i]);
                }
            }
     
            //---------------------------------------------------------------------
            if (e.getSource() == jb_reset_cli) { //Annuler la recherche
                jtf_search.setText("");
                jcb_nom_cli.removeAllItems();
     
                bdd.connect();
                String[] tab = bdd.selectNom("SELECT nom FROM client ORDER BY nom");
                bdd.close();
     
     
                for (int i = 0; i < tab.length; i++) {
                    jcb_nom_cli.addItem(tab[i]);
                }
     
     
            }
            //---------------------------------------------------------------------
    //EVENEMENT CREE A MON PREMIER TOUR DE BOUCLE
     
            if (e.getSource() == jcb_nom_cli) {
                   int nbre = jcb_nom_cli.getItemCount();
                   //Si il y a des items!
     
                   if (nbre != 0) {
     
                       //on récupère l'index de l'item
                       int index = jcb_nom_cli.getSelectedIndex();
     
                       //Si aucun item n'est sélectionné
                       if (index != -1 ) {            
     
                           Object obj = jcb_nom_cli.getSelectedItem();
                           String nom = (String) obj;
     
                           if (!nom.equals("")) {
                               System.out.println("nom: "+nom);
                           }
                       }
     
                   }
     
             }
     
        }
    SI vous voyez ou j'ai fait une erreur ou si il y a une alternative à mon problème... je vous en remercie d'avance!

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Je comprends bien ce que tu veux faire, mais j'ai un peu de mal à suivre les détails de tes explications. Aussi pardonne-moi si je tombe à coté.

    À première vue dans ce genre de cas il est préférable de créer son propre ComboBoxModel. En effet celui par défaut envoie un événement à chaque manipulation (chaque ajout, chaque retrait, etc). Lorsque l'on veut faire des manipulations générales, (ajouter / retirer tout un ensemble de valeurs), il est mal adapté.

    Avec ton propre modèle, tu pourras gérer comme tu veux et la manipulation des valeurs, et la manipulation des évènements correspondant.

  3. #3
    Membre habitué Avatar de cysboy
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 221
    Points : 168
    Points
    168
    Par défaut
    Merci beaucoup pour ta réponse...
    Elle est beaucoup plus pro que la mienne qui consiste à ajouter une phrase de mon choix en premier Item...vu que l'événement se crée au premier ajout, j'ai donc ajouté une condition et Zou!!!!!
    Dans tous les cas, encore merci!

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

Discussions similaires

  1. [TThread] Problème avec l'évènement OnTerminate
    Par coax81 dans le forum Langage
    Réponses: 12
    Dernier message: 05/11/2007, 15h05
  2. Problème avec les évènement de mes controle
    Par napegadie dans le forum VB.NET
    Réponses: 5
    Dernier message: 17/08/2007, 13h41
  3. [C# 2.0] Problème avec l'évènement de mon userControl
    Par manu94600 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 04/11/2006, 21h36
  4. problème avec l'événement onBlur
    Par danyboy85 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/04/2006, 12h48
  5. [wxpython] problème avec les événements souris
    Par kalimero dans le forum wxPython
    Réponses: 2
    Dernier message: 13/11/2005, 16h42

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