Le moteur de rendu peut ressembler à une usine de composants de retour pour les cellules, mais en fait, il suit la masselotte rendu approche et utilise le même composant pour rendre toutes les cellules (chaque appel à getListCellRendererComponent()
est censé reconfigurer la même instance de composant pour une cellule spécifique et renvoyez-la afin que la cellule puisse être rendue). De cette façon, vous pouvez avoir JList
(ainsi que JTable
et JTree
) afficher une quantité massive de cellules sans avoir à instancier des composants pour chaque cellule. En tant qu'effet secondaire, le composant de rendu ne peut pas répondre aux événements, car il n'est utilisé que pendant la boucle de rendu, mais n'apparaît pas dans l'arborescence des composants.
Tout comme Neil Coffey dit, vous pouvez ajouter vos auditeurs à la JList
(JTable
, JTree
) à la place, et d'utiliser les méthodes d'aide (locationToIndex(...)
, getCellBounds(...)
) d'envoyer cette cellule a été affectée et donc faire face à la logique spécifique des cellules.
Très bonne question. Je pensais que cela pouvait avoir quelque chose à voir avec ItemListeners, mais maintenant je ne le pense pas ... J'ai essayé de trouver un exemple de code mais je n'ai pas réussi. – Uri
Salut, je fais face au même problème, êtes-vous capable de résoudre le problème? – user236501