getTableCellRendererComponent 参数的含义
Posted
技术标签:
【中文标题】getTableCellRendererComponent 参数的含义【英文标题】:Meaning of getTableCellRendererComponent argument 【发布时间】:2013-08-30 13:34:04 【问题描述】:这是我的第一个 *** 问题,所以如果我提出/提出一些非常愚蠢的问题,请宽容!
我是 Java 的菜鸟,尤其是 Swing,我无法理解 TableCellRenderer 接口的 getTableCellRendererComponent 函数(与 TableCellEditor 接口的 getTableCellEditorComponent 函数类似)。具体来说,我不明白第二个参数(对象类型)的意义。这个值不是来自给定行和列的给定 JTable 吗?如果是这样,为什么还要打扰第二个论点呢?我在谷歌上搜索了很多,但似乎没有人回答这个问题(或者我的大脑可能有一些故障神经元,考虑到过去的历史,这不是一个不太可能的解释......)
非常感谢您的帮助!
谢谢
【问题讨论】:
转到这里docs.oracle.com/javase/6/docs/api/javax/swing/table/… 这可能会有所帮助 我已经看过了,但仍然没有意义。为什么不直接调用 table.getValueAt(row, column) 而不是使用“value”? 【参考方案1】:JTable
渲染是flyweight pattern 的一个示例,其中重复移动单个组件以渲染表格单元格的值。每次表格确定需要呈现单元格时,表格都会调用getTableCellRendererComponent()
。由于它可能被频繁调用,因此应注意效率。优点是可以省略不可见单元格的渲染过程。另请参阅此相关example。
附录:为什么不直接调用table.getValueAt(row, column)
而不是使用value
?
在绘制单元格时,表格的 UI 委托(通常是 BasicTableUI
的子类)必须在不知道 TableModel
的情况下调用 prepareRenderer()
。表的prepareRenderer()
方法的契约确实 知道TableModel
,指定它“通过查询数据模型的值来准备渲染器”。详情请见A Swing Architecture Overview。
【讨论】:
以上是关于getTableCellRendererComponent 参数的含义的主要内容,如果未能解决你的问题,请参考以下文章