java - getTableCellRendererComponent 参数的含义

标签 java swing jtable tablecellrenderer

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

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

非常感谢您的帮助!

谢谢

最佳答案

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

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

当它绘制单元格时,表格的 UI 委托(delegate)(通常是 BasicTableUI 的子类)必须在不了解 TableModel 的情况下调用 prepareRenderer() >。表的 prepareRenderer() 方法的约定(该方法确实了解 TableModel)指定它“通过查询数据来准备渲染器”值的模型。”请参阅A Swing Architecture Overview了解详情。

关于java - getTableCellRendererComponent 参数的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18471615/

相关文章:

java - 如何设置一个方法来设置多个 JLabel 的文本?

java - SwingMetawidget,值未绑定(bind)到 JComboBox

java - JTextArea-Dialog 作为 JTable-CellEditor 错过了第一个键入的字符

java - 数组变量的错误

java - 加快查找连接到 Wifi 网络的设备并获取设备名称

java - 如何使用 httppost FileEntity 与 PHP 服务器一起上传文件

java - 使用 StAX 写入现有 xml 文件

java - 希望我的屏幕截图显示在 JFrame 中

java - 开始编辑时更改 JTable 单元格边框的颜色(不是单击时,仅当光标出现时)

java - 从 JTable 到直方图 - Swing