繁体   English   中英

java:何时将此方法称为:getTableCellRendererComponent?

[英]java : when is this method called : getTableCellRendererComponent?

为了设置特定表格单元格的颜色,我应该创建一个具有以下方法的自定义TableCellRenderer: getTableCellRendererComponent

此方法何时称为: getTableCellRendererComponent

只是在第一次绘制JTable时?

如果我在jframe上有一组按钮和一个jtable,并且每个按钮在按下时都会导致表中一定数量的单元格变色,那么当我按下on时,如何使此方法"getTableCellRendererComponent"被调用按钮 ?

首次呈现该表时将触发此事件,但是当调用fireTableCellUpdated或任何其他“ fire *”方法时,应在所有单元格上调用此函数。 我的印象是,您正在使用扩展AbstractTableModel(DefaultTableModel?)的类,此时,当您更新表模型的特定值时,应触发这些方法。

示例库中可以找到使用自定义单元格渲染器的示例 当进入单元格视图并发生模型更新时,将调用getTableCellRendererComponent。

附录 :我刚刚注意到您的问题的另一部分, 什么时候调用getTableCellRendererComponent? 对于必须呈现的表中的每个可见单元格都调用此方法。 可以这样考虑,如果您在内部使用JLabel作为渲染器,则将返回配置为仅显示该单元格的JLabel。 它将在下一个单元格上重新使用以进行渲染。 想到它的最简单方法是使您的单元格看起来像一个可视模板,在getTableCellRendererComponent调用上对其进行配置,然后将其返回。 调用框架将其作为“图像”(缺乏更好的术语)呈现给屏幕缓冲区,然后为下一个单元重新配置并再次呈现。

如果您想忘记TableCell的更新时间/方式/位置,请找prepareRenderer最佳示例,因为我看到了camickr博客

编辑:为了获得更好/更有价值的帮助,请编辑您的帖子并添加代码

此方法何时称为:getTableCellRendererComponent?

第一次为您的视图显示/渲染UI组件时,将调用此方法。

在JTable的单元格中设置颜色

  1. 希望您使用的是自定义DefaultTableCellRenderer 如果是这样,则可以在自定义CellRenderer中全球化JLabel,然后在基于行,列索引的按钮上单击时设置其背景颜色。

  2. 另外,您可以使用DefaultTableColumnModel ,它具有defaultrenderer / set customrenderer,它将为每个单元格渲染。 使用它可以设置单元格的背景色。

 TableColumn col = table.getColumnModel().getColumn(vColIndex); col.setCellRenderer(new MyTableCellRenderer()); 

请参阅: 简单示例以演示TableCellRenderer的用法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM