Bonjour,
Je cherche un widget Java qui restreint une liste à mesure que l'utilisateur entre des lettres.
Par exemple
Touches entrées: [Lé]...
Restrictions de la liste à
[Léa]
[Léonne]
[Léon]
[Léïla]
Merci pour votre aide.
Version imprimable
Bonjour,
Je cherche un widget Java qui restreint une liste à mesure que l'utilisateur entre des lettres.
Par exemple
Touches entrées: [Lé]...
Restrictions de la liste à
[Léa]
[Léonne]
[Léon]
[Léïla]
Merci pour votre aide.
Bonsoir, ci-dessous un lien sur une discussion au sujet de l'auto-complétion sur JComboBox (tu trouveras d'autres exemples en tapant sur google "jcombobox autocompletion" ou encore "jlist autocompletion").
http://www.developpez.net/forums/d37...ion-jcombobox/
Bonjour,
J'ai trouvé ce code sur un site francophone:
C'est déjà bien, maintenant je vais rechercher ce que tu m'as indiqué.Code:
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98 import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.util.ArrayList; import javax.swing.DefaultListModel; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JTextField; import javax.swing.SwingUtilities; import org.dyno.visual.swing.layouts.Constraints; import org.dyno.visual.swing.layouts.GroupLayout; import org.dyno.visual.swing.layouts.Leading; @SuppressWarnings("all") public class TextFilter extends JFrame { private JList jList0; private JTextField jTextFieldRecherche; private ArrayList lesElements = new ArrayList(); public TextFilter() { setLayout(new GroupLayout()); add(getJList0(), new Constraints(new Leading(24, 155, 10, 10), new Leading(32, 387, 10, 10))); add(getJTextFieldRecherche(), new Constraints(new Leading(297, 119, 10, 10), new Leading(163, 10, 10))); setSize(550, 450); } private void initArrayList(){ lesElements.add("Lucas"); lesElements.add("Lea"); lesElements.add("Theo"); lesElements.add("Manon"); lesElements.add("Hugo"); lesElements.add("Emma"); lesElements.add("Thomas"); lesElements.add("Chloe"); lesElements.add("Enzo"); lesElements.add("Camille"); lesElements.add("Maxime"); lesElements.add("Oceane"); lesElements.add("Alexandre"); lesElements.add("Ines"); lesElements.add("Mathis"); lesElements.add("Marie"); lesElements.add("Nathan"); lesElements.add("Clara"); lesElements.add("Antoine"); lesElements.add("Sarah"); } private JList getJList0() { if (jList0 == null) { jList0 = new JList(); DefaultListModel listModel = new DefaultListModel(); initArrayList(); //Ajouts des Elements de l'arrayList dans la JList for (int i = 0; i< lesElements.size();i++) listModel.addElement(lesElements.get(i).toString()); jList0.setModel(listModel); } return jList0; } private JTextField getJTextFieldRecherche() { if (jTextFieldRecherche == null) { jTextFieldRecherche = new JTextField(); //Ajout d'un listener lors d'un relachement d'une touche de clavier jTextFieldRecherche.addKeyListener(new KeyAdapter() { public void keyReleased(KeyEvent e) { DefaultListModel model = new DefaultListModel();//creation dun nouveau model pour une JList String enteredText = jTextFieldRecherche.getText(); //On recupere le texte entree dans le JtextField for (int i = 0; i< lesElements.size();i++) { //Comparaison des elements contenu dans l ArrayList et du texte entree if (lesElements.get(i).toString().indexOf(enteredText) != -1) { model.addElement(lesElements.get(i).toString());//ajout de lelement dans le nouveau model } } getJList0().setModel(model);//On definie ce nouveau model pour la JList } }); } return jTextFieldRecherche; } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { TextFilter frame = new TextFilter(); frame.setDefaultCloseOperation(TextFilter.EXIT_ON_CLOSE); frame.setTitle("TextFilter"); frame.getContentPane().setPreferredSize(frame.getSize()); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } }
Les imports org.dyno sont résolus par un plugin pour Eclipse trouvé sur le web.
Merci beaucoup:ccool:
Bonjour,
Le plugin org.dyno.visual.swing se trouve ici:
http://code.google.com/p/visualswing...0.zip&can=2&q=
Bonne journée
Bonsoir,
Un peu dans la même idée que ce que tu propose, j'ai trouvé une implémentation intéressante décrite ici : http://codeidol.com/java/swing/Lists...Filter-JLists/ (le site est en anglais, mais le code est simple et bien documenté).
L'avantage est que tu n'as plus qu'à instancier la liste, renseigner ses éléments, récupérer et afficher le textfield de recherche inclus.
En espérant que cela t'aidera.