我使用DefaultTableCellRenderer为表格的行着色。行的颜色不是显示的表数据中固有的,它是用于构建表的基础数据的属性。我使用表模型从底层数据提供单元格数据(显式地传递给表模型,并小心地避免线程问题。)
在渲染器中,我需要访问基础数据或表模型。目前我可以使用静态或单身,但未来可能不太理想。
从渲染器访问数据的正确方法是什么?我的渲染器是这样的:
class SummaryTableCellRenderer extends DefaultTableCellRenderer {
private static final long serialVersionUID = 1L;
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
... access my data here to derive color ...
c.setBackground(color);
return c;
}
}
我希望我可以使用table.getModel()来获取我的表模型,但是这会返回一个我无法转换为我的表模型的类型(它扩展了AbstractTableModel,而不是TableModel,后者是一个界面。)
我出于兼容性原因使用JavaSE-1.6,以防万一。谢谢!
答案 0 :(得分:2)
getTableCellRendererComponent
方法在调用时传递JTable
的引用...
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
为什么不用它来获取对TableModel
...
TableModel model = table.getModel();
现在,根据您的需要,您可能需要将其投放到TableModel