Средство рендеринга может выглядеть как фабрика для возврата компонентов для ячеек, но на самом деле оно соответствует подходу рендеринг в полулегком и использует тот же самый компонент для рендеринга всех ячеек (каждый вызов getListCellRendererComponent()
должен перенастроить тот же экземпляр компонента для конкретной ячейки и вернуть его, чтобы ячейка могла быть обработана).
Таким образом, вы можете JList
(а также JTable
и JTree
) отображать огромное количество ячеек без необходимости создавать компоненты для каждой ячейки. Как побочный эффект, компонент рендеринга не может реагировать на события, так как он используется только во время цикла рендеринга, но не отображается в дереве компонентов.
Как сказал Нил Коффи, вы можете вместо этого добавить своих слушателей в JList
(JTable
, JTree
) и использовать вспомогательные методы (locationToIndex(...)
, getCellBounds(...)
), чтобы определить, какая ячейка была затронута и, следовательно, иметь дело с клеточной логикой.