Bonjour à tous,
J'ai actuellement une application dans laquelle je souhaiterai mettre un auto complete sur un JTextField.
J'ai réussit à le faire à l'aide de la bibliothèque SwingX mais le rendu n'est pas exactement ce que je souhaiterai.
En effet actuellement, lorsque je tappe mon texte le JTextField s'autocomplete avec la première correspondance alors que j'aimerai qu'en plus de cela, il me propose une liste en dessous des choix possible.
Pour mieux vous expliquer, je vous montre mon code:
operation, me retourne en fait un array des noms de package que j'ai dans ma base de données via un webservice. Actuellement, avec ce que j'ai comme donnée le code peut se simplifier ainsi:
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 public class EssaiPanel extends Container{ List<Object> refs =null; List<String> refsPackage = new ArrayList<String>(); public EssaiPanel(Dimension dim) { super(dim); initPanel(); } public void initPanel() { JTextField txtReference = new JTextField(15); refs=operation(); // on récupère tout les stocke for (int i = 0 ; i<refs.size() ; i++) { refsPackage.add(refs.get(i).toString()); } AutoCompleteDecorator.decorate(txtReference, refsPackage, false); panel.add(txtReference); } private static java.util.List<java.lang.Object> operation() { PackageExistant.PackageExistantService service = new PackageExistant.PackageExistantService(); PackageExistant.PackageExistant port = service.getPackageExistantPort(); return port.operation(); } }
Je voudrais donc que lorsque je tappe "W" dans mon champs texte, le champs texte se complete automatiquement et me propose en solution Winrar, WampServer et row, un peu a la manière d'un ComboBox.
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 public class EssaiPanel extends Container{ List<Object> refs =null; List<String> refsPackage = new ArrayList<String>(); public EssaiPanel(Dimension dim) { super(dim); initPanel(); } public void initPanel() { JTextField txtReference = new JTextField(15); refsPackage.add("NotePad++"); refsPackage.add("Fond d'ecran"); refsPackage.add("WampServer"); refsPackage.add("Winrar"); refsPackage.add("Brian Adams"); refsPackage.add("Linkin Park"); refsPackage.add("The Virgins"); refsPackage.add("Aucun"); refsPackage.add("Beck"); refsPackage.add("Dexter"); refsPackage.add("Gangs of NY"); refsPackage.add("row"); AutoCompleteDecorator.decorate(txtReference, refsPackage, false); panel.add(txtReference); } }
Pour ceux qui me diront autant faire un comboBox, je préviens que ce champs texte pourra permettre une nouvelle insertion d'un nouveau package dans la base de donnée, d'où l'importance à ce que ce soit un champs text et non un combobox!!
Merci de votre aide.
Partager