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!