繁体   English   中英

如何使用不带单例的JTable单元格渲染器?

[英]How to use JTable cell renderer without singletons?

我正在使用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,以防万一。 谢谢!

调用getTableCellRendererComponent方法时会传递JTable的引用...

public Component getTableCellRendererComponent(JTable table, Object value, boolean   isSelected, boolean hasFocus, int row, int col) {

为什么不仅仅使用它来获取对TableModel的引用呢?

TableModel model = table.getModel();

现在,根据您的需求,您可能需要将其TableModelTableModel实现

暂无
暂无

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

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