java设置表中特定单元格的颜色

时间:2015-07-30 17:24:28

标签: java swing jtable static-variables tablecellrenderer

如果其中的值大于零,我将在一列的单元格中为文本着色。我知道,已经有人这样问了,但是尽管进行了几个小时的搜索,但我找不到工作的解决方案。一切都给了我一些错误。解决方案,这给我最少的错误是:

public class MyRenderer extends DefaultTableCellRenderer  
{ 

    public Component getTableCellRendererComponent(JTable table, Object value, boolean   isSelected, boolean hasFocus, int row, int column) 
{ 
    Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 
    c.setForeground(Color.RED);
    double values = Double.parseDouble(c.getInputContext().toString());
    if(column == 2){
        if(values > 0){
            c.setForeground(Color.GREEN);
        }
    }
    return c; 
} 

}

然而,当我得到这样的引用时:

MyRenderer.getTableCellRendererComponent(table, "ok", true, true, 2, 2);

它给了我这个错误:

Cannot make a static reference to the non-static method getTableCellRendererComponent(JTable, Object, boolean, boolean, int, int) from the type bitc.MyRenderer

但是当方法是静态的时,方法会给我这个错误......:

This static method cannot hide the instance method from DefaultTableCellRenderer

我不知道如何绕过这个。

1 个答案:

答案 0 :(得分:1)

我想知道你什么时候试着打电话给MyRenderer.getTableCellRendererComponent(table, "ok", true, true, 2, 2);

通常应该这样做:

table.setDefaultRenderer(Double.class, new MyRenderer());

table.getColumnModel().getColumn(columnIndex).setCellRenderer(new MyRenderer());