2015-07-30 5 views
2

Я должен покрасить текст в ячейки одного столбца, если значение в нем больше нуля. Я знал, что это уже было так, но я не могу найти рабочего решения, несмотря на несколько часов поиска. Все дает мне некоторые ошибки. Решение, которое дает мне меньше всего ошибок заключается в следующем:java set цвет конкретных ячеек в таблице

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 

И я понятия не имею, как обойти это.

+0

для лучшей помощи скорее опубликовать SSCCE/MCVE, короткий, работоспособный, компилируется с закодированным значением для JTable/XxxTbaleModel в местном переменная – mKorbel

ответ

1

Интересно, когда вы пытаетесь позвонить MyRenderer.getTableCellRendererComponent(table, "ok", true, true, 2, 2);?

Обычно нужен сделать что-то вроде этого:

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

или

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

Теперь у меня есть эта ошибка: 'Нет доступного экземпляра типа bitc. Должен квалифицировать выделение с помощью экземпляра типа bitc (например, xnew A(), где x является экземпляром bitc). (Мой английский не идеален, извините за ошибки, и я мог бы неправильно понять что-то) – anat

+0

Но вы понимаете, что это жалуется на 'bitc'? И как мне узнать, что «битц» в вашем контексте, без [MCVE] (http://stackoverflow.com/help/mcve)? Просто предположение: MyRenderer является внутренним классом, и вы используете его в статическом контексте? В этом случае вы можете сделать его «статическим» классом. –

Смежные вопросы