Для чего нужен CellRendererPane? - PullRequest
2 голосов
/ 27 июля 2011

Класс javax.swing.CellRendererPane "вставлен между средствами визуализации ячеек и компонентами, которые их используют", и "просто существует, чтобы помешать методам repaint () и invalidate (), которые в противном случае распространялись бы вверх по дереву при настройке средства визуализации."

Вот что говорит мне JavaDoc, но что это значит?Как это используется, и что будет, если вместо этого repaint() и invalidate() будет разрешено распространяться вверх по дереву?Конкретные примеры особенно приветствуются.

1 Ответ

5 голосов
/ 27 июля 2011

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

Почему? Потому что перерисовка и аннулирование являются потенциально дорогостоящими событиями для обработки; в этом нет необходимости; и простой компонент (панель) может их просто отфильтровать.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...