Отображатель может выглядеть как фабрика для возвращения компонентов для клеток, но на самом деле это следует за мухи рендерингом подхода и использует же компонента для визуализации всех ячеек (каждый вызов getListCellRendererComponent()
должен перенастроить тот же экземпляр компонента для конкретной ячейки и возвращает его, чтобы можно было отобразить ячейку).
Таким образом, вы можете иметь JList
(а также) и отображать огромное количество ячеек без необходимости создавать компоненты для каждой ячейки. В качестве побочного эффекта компонент визуализации не может реагировать на события, поскольку он используется только в цикле рендеринга, но не отображается в дереве компонентов.
Подобно тому, как сказал Нил Коффи, вы можете добавить слушателей к JList
(JTable
, JTree
) вместо этого, и использовать вспомогательные методы (locationToIndex(...)
, getCellBounds(...)
) для отправки которых клетка была затронута и, таким образом, иметь дело с клеточной специфической логикой.
Очень хороший вопрос. Я думал, что это может иметь какое-то отношение к ItemListeners, но теперь я так не думаю ... Я пробовал найти образец кода, но не был успешным. – Uri
Привет, я сталкиваюсь с той же проблемой, могу ли вы решить проблему? – user236501