什么是CellRendererPane?

Ben*_*Ben 2 java swing

javax.swing.CellRendererPane"插入在单元格渲染器和使用它们的组件之间"和"只是存在以阻止repaint()和invalidate()方法,否则这些方法会在配置渲染器时向上传播."

这就是JavaDoc告诉我的内容,但这是什么意思?它是如何使用的,如果会发生什么,repaint()并且invalidate()被允许,而不是传播上树?具体的例子特别受欢迎.

alp*_*ero 5

这意味着它被插入到组件树的中间(以顶层窗口为根)并将吃掉某些事件,例如重绘和无效,以防止它们传播到组件包含层次结构中.

为什么?因为重绘和无效是可能需要处理的昂贵事件; 在这种情况下没有必要; 一个简单的组件(窗格)可以轻松过滤它们.

如果事件要传播,那么每个组件都会不必要地重新计算它们的布局(无效)并重绘(重绘)它们自己.