gpt4 book ai didi

java - getTableCellRendererComponent 参数的含义

转载 作者:行者123 更新时间:2023-12-02 06:47:23 24 4
gpt4 key购买 nike

这是我的第一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com