cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 2013
-
2 sept. 2011 à 15:59
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 2012
-
5 sept. 2011 à 18:15
Bonjour amis java-istes,
J'ai créé une JList perso (par extension de DefaultListModel/ListCellRenderer) pour afficher et gérer une liste d'objets complexes. Cette liste est filtrée ou non suivant un coche de JCheck. Lorsque le filtrage est trop restrictif je me retrouve avec une JList vide.
J'aimerais alors pouvoir afficher, dans le rectangle de la JList, un message informatif (inutile au possible mais qui fait joli ^^) du genre : "Aucun objet trouvé".
Existe-t-il une méthode prévue par la JList pour cela ?
Dois-je instancier un JLabel et le coller "par-dessus" ma JList ?
Dois-je créer et associer un nouveau ListModel spécialement pour cet affichage ?
Je prends toutes vos propositions, merci d'avance :)
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 2 sept. 2011 à 16:59
Salut,
Si la position du message t importe peu tu fait une liste avec une seule entrée contenant ton message informatif ;o) tu met ta liste enable=false et cela me semble le plus simple ;o) ... maintenant si tu as des comportements associé à la liste oublie pas de tester le flag 'enable' avant les traitements ;o) ...
Dans ce cas ton message devrait s afficher en grissé en haut de ta liste ;o) ... Perso ;o) je trouve cela suffisent ;o) (tu peux aussi mixer avec le renderer.
La méthode riche ;o) c est de faire ta propre class JList (qui hérite de JList bien sur) ;o) à laquelle tu associes des comportement de liste vide ;o) ... en détournant carrement le context graphics ;o) et en positionnant tes propres flag ;o)
Et il y a surement encore d autre façon ;o) toute plus ou moins propre ;o) comme de coler un JLabel ;o) dessus ;o) (au minimum transparent) ;o)
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 5 sept. 2011 à 10:57
Salut,
merci pour la réponse. Alors j'avais pensé à ajouter une seule et unique entrée, de type String ("aucun enregistrement") mais j'avais un souci avec mon CellRenderer qui s'attendait à des objets complexes (ceux originellement listés dans ma JList faite maison).
En fait il fallait simplement faire une gestion spécifique dans le getListCellRendererComponent dans le cas où value instanceof String ;)
Maintenant je me bats pour désélectionner l'item String, qui se retrouve sélectionné dans le cas où : je sélectionne une vraie item (objet complexe) puis je filtre, ce qui vire tous mes items et mets le String "aucun enregistrement", qui se retrouve sélectionné (même si ma JList est disablée).