getTableCellRendererComponent参数的含义
这是我的第一个StackOverflow问题,所以如果我做了一些非常愚蠢的事情,请宽容一点!
对于Java,我是一个菜鸟,特别是swing,我无法理解TableCellRenderer接口的getTableCellRendererComponent函数(与TableCellEditor接口的getTableCellEditorComponent函数类似)。 具体来说,我不明白第二个参数(对象类型)的要点。 这个值是不是来自给定行和列的给定JTable? 如果是这样,为什么还要为第二个参数烦恼呢? 我已经做了很多谷歌搜索,但似乎没有人回答这个问题(或者我的大脑有一些故障的神经元,鉴于过去的历史,这不是一个不太可能的解释……)
我很感激你的帮助!
谢谢
JTable
渲染是flyweight模式的一个示例,其中重复移动单个组件以呈现表格单元格的值。 每次表确定需要呈现单元格时,表都会调用getTableCellRendererComponent()
。 由于它可能被频繁调用,因此应该注意效率。 优点是对于不可见的单元格可以省略渲染过程。 另请参见此相关示例 。
附录: 为什么不只是简单地调用 table.getValueAt(row, column)
而不是使用 value
?
当它绘制单元格时,表的UI委托(通常是prepareRenderer()
的子类prepareRenderer()
必须在不知道TableModel
情况下调用prepareRenderer()
。 表的prepareRenderer()
方法的prepareRenderer()
它确实知道TableModel
)指定它“通过查询数据模型的值来准备渲染器”。 有关详细信息,请参阅Swing架构概述 。