Bonjour,
J'ai ajouté un renderer de type JLabel sur mon JComboBox et je n'arrive plus à accéder aux éléments en tapant la première lettre. J'aimerais en outre ajouter une complétion automatique... Quelqu'un a une idée ??
Merci
Version imprimable
Bonjour,
J'ai ajouté un renderer de type JLabel sur mon JComboBox et je n'arrive plus à accéder aux éléments en tapant la première lettre. J'aimerais en outre ajouter une complétion automatique... Quelqu'un a une idée ??
Merci
Il est tout à fait logique que tu ne puisses plus accéder à tes éléments avec des lettres... Ce serait pas logique le contraire, la liste référence des JLabel et pas le String qu'il contient...Citation:
Envoyé par jeffciara
Pour ce qui est de la complétion automatique, va voir swingx ;)
Ok je me doutais bien que c'était la cause...
Pour les swingx c'est bien ce site : https://swingx.dev.java.net/ ?
Ouaip, mais les binaires sont distribués de façon officielle sur swinglabs.org
Par contre dans les binaires je ne vois pas de combobox avec auto completion... Comment s'appelerait la classe ?
Il faut procéder de la façon suivante:
Code:
1
2
3 JComboBox comboBox = [...]; Configurator.enableAutoCompletion(comboBox);
Par contre, si tu veut rester sur ton histoire de JLabel, je ne pense pas que Swingx puisse t'aider...Citation:
Envoyé par jeffciara
Si tu veut vraiment faire quelque chose qui te mettre à la bonne ligne tu seras obligé de gérer ceci toi - même ;)
En fait la méthode est :Par contre cette méthode marche pour un JComboBox "classique". Comment faut il faire pour un JComboBox qui possede un renderer de type JLabel (ou peut importe le type d'ailleurs) ?Code:AutoCompleteDecorator.decorate(unJComboBox);
En fait ça dépend de la version de swingx je présume, dans la 0.8 ce que j'ai dit est correct, ensuite das les versions suivantes celà changé et ça se pratique comme tu l'as dit
Comme je te l'ai dit, l'auto-completion swingx ne gère cela qu'avec une liste de String, si tu veut le faire avec une liste de JLabel, il va falloir le developper toi-mêmeCitation:
Envoyé par jeffciara
oups j'avais pas vu ton message witchou...
En fait l'histoire du renderer jlabel c'était pour me permettre d'avoir un (ou plusieurs) champ caché qui représentait la clé de l'item sélectionné. Cela marche très bien. Mais a ses limites apparement...
Ce qui me parait bizard, c'est qu'il n'existe pas un composant de type ComboBox en Java qui permet de gérer le clé/Valeur comme un simple combo HTML...
Je comprends pas trop ce que tu entends gérer un couple clé valeur ? Tu veut donc dire deux colonnes dans un JComboBOx ?Citation:
Envoyé par jeffciara
Je voudrais avoir un champ caché (clé) qui represente la clé d'une table et la valeur à afficher qui serait un champ de la table.
Exemple :
Champ caché/ Liste du combobox
(1) --> Auto
(2) --> Moto
(3) --> Bateau
J'arrive à faire cela avec un renderer mais je n'ai plus droit à mon auto-completion :(
Pour illustrer le problème jeffciara, imaginez que l'on a une base avec un table véhicule(id, nom, marque, type) et une table type véhicule (id, nom). Et, sinon ce serait pas drole, que les id de la table type ne commencent pas a 1, ni ne se suivent .
Et biensur l'on veut lier notre combobox avec cette table type.
Un tableau ou un vecteur ne peuvent pas répondre a ce problème, va donc falloir redefinir un modèle. Parcontre dans quoi stocker les données ? hashmap, tableau d'objet ?
J'ai testé deux solutions à cette question:
- un nouveau renderer comme tu l'as fait (et qui te pose problème)
- redéfinir la méthode toString de l'objet que tu ranges dans ta combo, en
renvoyant la valeur que tu veux afficher dans ton combo.
Je ne sais pas si c'est a moi que tu repond, mais tout l'enjeux est d'arriver a travailler avec les id et non afficher les labels ;)
Enfin pour ma cas perso, y a pu de problème, j'avais un temps soi peu oublié qu'en java on fonctionne avec des références :lol: :lol: :lol:
Je répondais à la question initiale.
J'ai bien compris la question posée et je donnais une solution au problème.
Merci pour vos réponses mais le probleme est de trouver un moyen d'obtenir l'autocomplétion. C'est à dire selectionner un item à partir d'une saisie clavier.