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:
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 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();
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!
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); } } } } }
Partager