Der Renderer wie eine Fabrik aussehen kann Komponenten für die Zellen für die Rückgabe, sondern neu zu konfigurieren in der Tat ist es folgt das Fliegengewicht Rendering Ansatz und verwendet die gleiche Komponente für die Darstellung aller Zellen (jeder Anruf zu getListCellRendererComponent()
soll dieselbe Komponenteninstanz für eine bestimmte Zelle und gibt sie zurück, so dass die Zelle gerendert werden kann).
Auf diese Weise können Sie JList
(sowie JTable
und JTree
) zeigen enorme Menge an Zellen ohne Komponenten für jede Zelle instanziieren ist. Als Nebeneffekt kann die Renderkomponente nicht auf Ereignisse reagieren, da sie nur während der Renderschleife verwendet wird, aber nicht in der Komponentenstruktur angezeigt wird.
Wie Neil Coffey sagte: Sie Ihre Zuhörer zum JList
(JTable
, JTree
) statt hinzufügen können, und die Helfer Methoden (locationToIndex(...)
, getCellBounds(...)
), die Zelle versenden beeinflusst wurde und somit mit zellspezifischen Logik beschäftigen.
Sehr gute Frage. Ich dachte, es könnte etwas mit ItemListeners zu tun haben, aber jetzt glaube ich nicht ... Ich habe versucht, Beispielcode zu finden, war aber nicht erfolgreich. – Uri
Hallo, ich habe das gleiche Problem, können Sie das Problem lösen? – user236501