Трудности в понимании механизма рендеринга свинга JTable и JTree

Часто при использованииJTable или жеJTree Пользователь пишет и присваивает ему свой собственный рендерер ячейки.

Очень часто наследовать пользователякомпонент отDefaultTableCellRendererи реализует метод рендерераgetTableCellRendererComponent, Оказывается, чтоDefaultTableCellRenderer фактически наследуется от JLabel, таким образом, возвращает себя (this) при вызове super (в методе рендеринга) и, следовательно, user 'Рендерер s может так же вернуть себя (this).

И все это работает хорошо.

Мой вопрос, как это может быть?

Каждый раз, когда этот метод вызывается таблицей, ему присваиваются разные параметры, и метка вывода изменяется в зависимости от этих параметров. Если это действительно тот же самый экземпляр метки - не должен»Может ли он быть изменен в соответствии с последним вызовом этого метода? Wouldn»т это означает, что все таблицы "s-клетки заражены, состоят из одного и того же экземпляра метки, который содержит одно и то же значение (значение последнего вызова метода визуализации)?

Я искал в Интернете и копался в Swingс кодом, и не смог найти какой-либо актклон или жеконструктор копирования это на самом деле дублирует выходной ярлык. Я не смог найти никаких доказательств того, что (возможно) свинг использует отражение для того, чтобы каждый раз создавать экземпляр рендерера с нуля.

Я прочитал качелиучебник по JTablesи там я смог найти следующие строки:

Вы можете ожидать, что каждая ячейка в таблице будет компонентом. Однако из соображений производительности таблицы Swing реализованы по-разному. Вместо этого для отображения всех ячеек, содержащих данные одного типа, обычно используется средство визуализации с одной ячейкой. Вы можете думать о визуализаторе как о настраиваемой маркировке чернил, которую таблица использует для печати соответственно отформатированных данных в каждой ячейке. Когда пользователь начинает редактировать ячейкус данными, редактор ячейки берет на себя ячейку, контролируя ячейкус редактированием поведения.

Они намекают, что на самом деле то, что я говорю, правильно, но не объясняют, как это на самом деле достигается.

Я могу'не понимаю Может кто-нибудь из вас?

Ответы на вопрос(3)

Ваш ответ на вопрос