Bonjour ,

J'ai créé un JComboBox éditable qui interroge une BDD et se complète automatiquement par ce que renvoi la BDD. (une sorte de recherche google, a mon niveau bien sur !!).

Cela fonctionne bien, mon souci est que a la saisie de ma première lettre j'ai bien sur beaucoup de résultat, mais ensuite les résultats diminuent mais la hauteur de ma dropdown reste la meme est quand je n'ai plus que une proposition j'ai une dropdown de 7 lignes avec 6 lignes vide.

Comment faire pour que la drop down se redessine a chaque fois? J'ai essayé avec validate() mais ça ne fonctionne pas.

Voici mon code :
(Bien sur il n'est pas compilable directement, je fais appelle a des classe de recherche perso.)

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
class comboBoxListener implements KeyListener{
        private JComboBox comboBox = new JComboBox();
        public comboBoxListener(JComboBox comboBox){
            this.comboBox=comboBox;
            }
        public void keyPressed (KeyEvent e){
        }
        public void keyTyped (KeyEvent e){
        }
        public void keyReleased (KeyEvent e){
            List resultat = new ArrayList();
            JTextField editorcomp = (JTextField) this.comboBox.getEditor().getEditorComponent();
            String texte=editorcomp.getText();
            RechercheMotCle resultatProposition = new RechercheMotCle(texte);
            try {
                resultat = resultatProposition.getListeProposition();
            } catch (SQLException ex) {
                Logger.getLogger(JComboBoxRecherche.class.getName()).log(Level.SEVERE, null, ex);
            }
            comboBox.removeAllItems();
            if(resultat.size()>0){
                int i = 0;
                while(i<resultat.size()){
                    comboBox.addItem(resultat.get(i));
                    i++;
                 }
                comboBox.setPopupVisible(true);
                comboBox.validate();
            }else if(resultat.size()==1 && resultat.get(0)==texte){
                comboBox.setPopupVisible(false);
            }else{
                comboBox.setPopupVisible(false);
                comboBox.validate();
            }
            editorcomp.setText(texte);
        }
    }
Une idée?

Merci