-
CheckListBox, possible ?
Bonjour,
Est-il possible de faire une JList avec des CheckBox ?
J'aurais besoin en fait d'une liste d'élément que l'on puisse sélectionner mais aussi cocher : le cochage pour sélectionner plusieurs éléments, la sélection pour n'affiche les propriétés que d'un seul élément.
Ou alors, si ce n'est pas possible à faire sous forme de list, est-il possible de gérer un scroll de plusieurs checkbox qui seraient mis les uns sous les autres (simulations d'une checklistbox donc) ?
Merci d'avance
-
Tu peux faire une JList de CheckBox en changeant le cell renderer (voir methode JList.setCellRenderer()).
-
Tu peux m'en dire un peu plus stp, j'ai commencé le Java il y a peu, et je ne connais pas encore les détails de quelques objets standard.
Si j'ai bien compris, on peut définir librement l'aspect de la cellule de la liste en utilisant cette fonction, mais comment y mettre un checkbox ?
Merci pour ta réponse.
-
La JList utilise un renderer (objet auquel le rendu est délégué) pour faire l'affichage de ses élements. C'est une sorte de composant graphique qui fonctionne comme un tampon (au sens tamponner + encre) qui est réutilisé pour faire le dessin de chacun des élement de la liste. En fournissant ton propre tampon (via setCellRenderer()) tu peux facilement avoir des listes avec des pésentations plus jolies et fournies que celle de base ; idem quand il s'agit de représenter des types d'objets que la JList ne connait pas/ne prend pas en charge de base. Cette technique est aussi utilisé dans le JTree, la JComboBox, ... et la JTable (qui elle peut avoir plusieurs renderers).
De même la JList utilise un editor pour savoir comment modifier la valeur quand elle est en mode éditable. Tu auras également plus d'info en lisant le header de la doc de la classe JList et en regardant sa page associée dans le Java Tutorial de Sun.
Tois choix se présentent à toi :
- utiliser une JCheckBox qui etend l'interface ListCellRenderer
- utiliser un DefaultListCellRenderer (en fait c'est tout simplement un JLabel) qui délègue ses méthode de rendu (paintComponent()) à une JCheckBox.
- fouiller sur le net, qqun a déjà fait la même chose et je suis sur d'avoir déjà vu plusieurs didacticiels te montrant comment faire.
Bien évidement si ta liste doit être éditable (et donc tes check clickables) il te faudra aussi fournir un editor approprié. Une fois cette/ces classe(s) créée(s) tu pourra la/les réutiliser dans tous les composants Swing utilisant des ListCellRenderer.