0

这是我的第一个 StackOverflow 问题,所以如果我做/问了一些非常愚蠢的问题,请宽容!

我是 Java 的菜鸟,特别是 Swing,我无法理解 TableCellRenderer 接口的 getTableCellRendererComponent 函数(与 TableCellEditor 接口的 getTableCellEditorComponent 函数类似)。具体来说,我不明白第二个参数(对象类型)的意义。这个值不是来自给定行和列的给定 JTable 吗?如果是这样,为什么还要打扰第二个论点呢?我已经做了很多谷歌搜索,但似乎没有人回答这个问题(或者我的大脑可能有一些故障神经元,考虑到过去的历史,这不是一个不太可能的解释......)

我将不胜感激!

谢谢

4

1 回答 1

2

JTable渲染是享元模式的一个示例,其中重复移动单个组件以渲染表格单元格的值。getTableCellRendererComponent()每次表格确定需要呈现单元格时,表格都会调用。由于它可能被频繁调用,因此应注意效率。优点是可以省略不可见单元格的渲染过程。另请参阅此相关示例

附录:为什么不只是简单地调用 table.getValueAt(row, column) 而不是使用 value

当它绘制一个单元格时,表格的 UI 委托,通常是 的子类BasicTableUI,必须prepareRenderer()在不知道TableModel. 表的prepareRenderer()方法的契约,它确实知道TableModel,指定它“通过查询数据模型的值来准备渲染器”。有关详细信息,请参阅Swing 架构概述

于 2013-08-27T17:14:24.283 回答