【问题标题】:Meaning of getTableCellRendererComponent argumentgetTableCellRendererComponent 参数的含义
【发布时间】:2013-08-30 13:34:04
【问题描述】:

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

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

非常感谢您的帮助!

谢谢

【问题讨论】:

标签: java swing jtable tablecellrenderer


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-06-25
    • 2012-08-22
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    相关资源
    最近更新 更多