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架构概述