JList vide : afficher un texte informatif [Résolu]

Signaler
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
-
Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
-
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

Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
10
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)
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
11
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).
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
11
my bad, je redéfinissais pas mon background dans le cas de l'item String ;)
Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
10
l essentiel ;o) et que cela fonctionne maintenant ;o) héhé ;o)

GodConan ;o)