为了设置特定表格单元格的颜色,我应该创建一个自定义TableCellRenderer,它具有以下方法:getTableCellRendererComponent
。
此方法何时调用:getTableCellRendererComponent
?
第一次绘制JTable
时?
如果我在jframe上有一组按钮和一个jtable,按下每个按钮会导致表中一定数量的单元格被着色,我该如何使这个方法"getTableCellRendererComponent"
成为当我按下按钮时调用?
答案 0 :(得分:2)
首次呈现表时会触发此类,但在调用fireTableCellUpdated或任何其他“fire *”方法时,应在所有单元格上调用此方法。我的印象是你正在使用一个扩展AbstractTableModel(DefaultTableModel?)的类,此时你应该在更新表模型的特定值时触发这些方法。
可以在Example Depot找到使用自定义单元格渲染器的示例。当引入单元格以及发生模型更新时,将调用getTableCellRendererComponent。
附录:我刚刚注意到你问题的另一部分,何时调用了getTableCellRendererComponent?这是为必须呈现的表中的每个可见单元格调用的。可以这样想,如果您在内部使用JLabel作为渲染器,您将返回JLabel配置为仅显示该单元格。它将在下一个单元格上重复使用以进行渲染。想到它的最简单方法是您希望单元格看起来像的可视化模板,在getTableCellRendererComponent调用上配置它,然后返回它。调用框架将其作为“图像”(由于缺少更好的术语)呈现给屏幕缓冲区,然后重新配置为下一个单元格并再次渲染。
答案 1 :(得分:2)
如果您想忘记更新TableCell的时间/方式/位置,那么请查看prepareRenderer最佳示例,因为我看到camickr blog
编辑:为了更好/更有价值的肝脏,请编辑您的帖子并添加您的代码
答案 2 :(得分:0)
此方法何时调用: getTableCellRendererComponent?
当第一次为您的视图显示/呈现UI组件时,将调用此方法。
设置JTable单元格中的颜色
希望您使用自定义DefaultTableCellRenderer
。如果是这样,那么您可以在自定义CellRenderer中全局化JLabel,然后根据行,列索引在按钮单击时设置其背景颜色。
否则,您可以使用您有defaultrenderer / set customrenderer的DefaultTableColumnModel
,它将针对每个单元格进行渲染。使用它可以设置单元格的背景颜色。
TableColumn col = table.getColumnModel().getColumn(vColIndex); col.setCellRenderer(new MyTableCellRenderer());