JList vide : afficher un texte informatif

Résolu
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 - 2 sept. 2011 à 15:59
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Derniè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 :)

4 réponses

cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
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)

GodConan ;o)
3
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
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).
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
5 sept. 2011 à 11:16
my bad, je redéfinissais pas mon background dans le cas de l'item String ;)
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
5 sept. 2011 à 18:15
l essentiel ;o) et que cela fonctionne maintenant ;o) héhé ;o)

GodConan ;o)
0
Rejoignez-nous