JList et focus

JList et focus - Java - Programmation

Marsh Posté le 07-08-2009 à 12:06:03    

Bonjour,
 
Je voudrais savoir comment faire pour qu'un élément d'une jlist sélectionné par défaut ait la couleur de son background qui change comme lors d'un click de souris.
 
En effet, en faisant un list.setSelectedIndex(index) , la ligne à l'index spécifié est bien sélectionnée par défaut MAIS ce n'est pas apparent pour l'utilisateur car il n'y a aucun changement de couleur comme lorsque c'est lui qui clique sur une des lignes de la jlist.
 
Je suppose qu'il doit y avoir un truc tout simple à ajouter, mais je ne vois pas quoi ...  :heink:

Reply

Marsh Posté le 07-08-2009 à 12:06:03   

Reply

Marsh Posté le 07-08-2009 à 13:27:32    

si l'index de élément est tjrs le même quand tu es "par défaut" tu peux peut-être faire un test simple genre :
 
if(List.get(index).isSelected()){List.get(index).setBackgroundColor(color);}
else{List.get(index).setBackgroundColor(colorInit);}
 
ou plus simple, tu fixe la couleur à l'initialisation de la List et tu la remet à l'état normal quand un autre est sélectionné en utilisant un Listener.
 
Je ne peux pas tester quoique ce soit mnt mais ça doit être possible, non ? (je suis pas sûr du setBackground)


Message édité par L'Ampli le 07-08-2009 à 13:55:33
Reply

Marsh Posté le 07-08-2009 à 14:22:30    

Salut L'ampli,
 
Tout d'abord merci de m'avoir répondu.
 
Finalement la couleur de la cellule change bien en ne mettant que le list.setSelected(index), il semble que le problème venait d'ailleurs...
 
A force d'avoir le nez sur son code on n'y voit plus rien !
 
J'aurais une autre petite question si tu as un peu de temps et la patience d'y répondre :
 
est-ce possible de rendre certains des éléments de la liste non sélectionnables (mais toujours apparents donc et grisés par exemple) ?
 
Pour l'instant je m'en tiens à gérer le listModel en enlevant carrément ces éléments, mais ça m'intéresserait de pouvoir le faire comme ça (moins déroutant pour l'utilisateur de ne pas avoir la taille de la liste et donc l'emplacement des éléments dans le panel qui change tout le temps je pense).
 
 
 
 
 
 
 
Merci pour ta réponse,
 
j'avais déjà essayé le setEnabled, mais ça agit sur la jList entière et non pas sur une des lignes en fait.
Tant pis, je reste sur ma précédente solution  :jap:


Message édité par Shimble le 14-08-2009 à 11:55:15
Reply

Marsh Posté le 07-08-2009 à 15:59:33    

je ne sais pas comment ça marche dans une jList mais pour la plupart des composant graphiques (jButton, jTexyField...), il y a setEnabled(boolean) dans la même veine que le setVisible(boolean) qui les fait disparaitre.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed