Eva*_*Eva 8 java swing jlabel cellrenderer subclassing
我注意到这很常见.例如,DefaultListCellRenderer,DefaultTableCellRenderer和DefaultTreeCellRenderer都使用它.我在网上看到的很多自定义单元格渲染器也使用它.我想在我的代码中使用自定义TableCellRenderer,但我对是否真的需要继承JLabel感到困惑.子类化JLabel有什么好处?
cam*_*ckr 10
DefaultTableCellRenderer的API指出:
表类定义单个单元格渲染器,并将其用作橡皮图章,用于渲染表格中的所有单元格; 它渲染第一个单元格,更改该单元格渲染器的内容,将原点移动到新位置,重新绘制它,依此类推.标准
JLabel组件并非设计为以这种方式使用,我们希望避免revalidate每次绘制单元时触发.这会大大降低性能,因为revalidate消息将在容器的层次结构中向上传递,以确定是否会影响任何其他组件.由于渲染器仅在绘制操作的生命周期中具有父级,因此我们同样希望避免与绘制操作的层次结构相关联的开销.所以这个类覆盖了validate,invalidate,revalidate,repaint,和firePropertyChange方法是无操作,并重写isOpaque方法仅仅是为了提高性能.如果您编写自己的渲染器,请记住此性能考虑因素.
JLabel拥有他们需要的所有火力,然后是一些 - 它处理文本和图标,它可以居中,默认情况下它具有非透明背景,......我可以继续......
| 归档时间: |
|
| 查看次数: |
945 次 |
| 最近记录: |