Rendre élément d'une JList non sélectionnable ? - Java - Programmation
Marsh Posté le 19-03-2010 à 16:40:28
Bonjour,
J'espère que tu as trouvé une solution depuis le temps. J'ai eu le même problème que toi et je n'ai pas trouvé grand chose sur la toile pour m'aider donc voici ma solution, qui n'est peut-être pas optimale mais qui fonctionne :
Je redéfinis ma liste pour qu'elle possède une "sous-liste" d'index :
Code :
|
Je redéfinis le rendu des items qui sont en fait des JLabel :
Code :
|
Dans mon JPanel ou ma JFrame, je crée ma list comme ça :
Code :
|
Et je peux directement utiliser les fonctions d'ajout ou de suppression des items de la liste des items non sélectionnables dans le JPanel ou la JFrame...
J'ai juste un petit problème de rafraîchissement : je n'arrive pas à rafraîchir automatiquement l'affichage de la liste après.
Voilà, j'espère que ça pourra aider des gens !!
EDIT : Oups ! J'allais oublier une partie importante du travail, parce que là, si vous testez, les items sont de la bonne couleur (grisés) mais encore cliquables... honte à moi...
En effet le CellRenderer ne gère que le rendu des cellules comme son nom l'indique. Et il faut donc encore vérifier dans les bon listeners (ceux qu'on appelle quand on clique sur l'item) que l'élément sélectionné n'appartient pas à la liste des éléments non cliquables... et si c'est le cas on ne fais rien !
Bon je ne sais pas si je suis très claire mais comme je suis rentrée du boulot je n'ai plus le code sous les yeux. Promis, lundi je fignole tout ça !
Marsh Posté le 27-07-2009 à 13:35:50
Bonjour,
Comme le titre l'indique, j'aimerais savoir s'il est possible de rendre certains éléments d'une JList non sélectionnables ?
Ainsi, on aurait une JList qui s'affiche dans un premier temps avec tous les éléments sélectionnables (les éléments étant des noms de fichiers). Puis, après chargement du répertoire de fichiers, si certains ne sont pas présents les éléments de la liste correspondants seraient grisés (ou en tout cas non cliquables).
J'ai vu pas mal de choses pour agir sur toute la JList (setEnabled), ou encore pour enlever des éléments mais rien pour agir uniquement sur la "sélectionnabilité" de certains éléments (sans modifier la structure globale de la JList donc)...
Merci d'avance !