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

cs_jopop 1540 Messages postés lundi 26 mai 2003Date d'inscription 1 août 2013 Dernière intervention - 2 sept. 2011 à 15:59 - Dernière réponse : cs_GodConan 2116 Messages postés samedi 8 novembre 2003Date d'inscriptionContributeurStatut 6 octobre 2012 Dernière intervention
- 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 :)
Afficher la suite 

Votre réponse

4 réponses

cs_GodConan 2116 Messages postés samedi 8 novembre 2003Date d'inscriptionContributeurStatut 6 octobre 2012 Dernière intervention - 2 sept. 2011 à 16:59
+3
Utile
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)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_GodConan
cs_jopop 1540 Messages postés lundi 26 mai 2003Date d'inscription 1 août 2013 Dernière intervention - 5 sept. 2011 à 10:57
0
Utile
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).
Commenter la réponse de cs_jopop
cs_jopop 1540 Messages postés lundi 26 mai 2003Date d'inscription 1 août 2013 Dernière intervention - 5 sept. 2011 à 11:16
0
Utile
my bad, je redéfinissais pas mon background dans le cas de l'item String ;)
Commenter la réponse de cs_jopop
cs_GodConan 2116 Messages postés samedi 8 novembre 2003Date d'inscriptionContributeurStatut 6 octobre 2012 Dernière intervention - 5 sept. 2011 à 18:15
0
Utile
l essentiel ;o) et que cela fonctionne maintenant ;o) héhé ;o)

GodConan ;o)
Commenter la réponse de cs_GodConan

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.