2013-10-06 5 views
-1

Я пытаюсь покрасить RED, на переднем плане, когда время вокруг какого-то условия, но рисует передний план всех строк (должно быть только семь). Что я делаю неправильно? Код ниже:Изменить JTable row foreground

class RedRenderer extends DefaultTableCellRenderer{     
    @Override 
    public Component getTableCellRendererComponent(JTable table, Object value,boolean isSelected, boolean hasFocus, int row, int column) { 
         super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);         

      BigDecimal time=new BigDecimal(jTable.getModel().getValueAt(row, 17).toString()); 
     if(time.compareTo(new BigDecimal(2))<=0){ 
       setForeground(Color.red); 
       setBackground(Color.white); 
     }else{ 
       setBackground(null); 
     } 

    return this; 
    }         
} 

ответ

1

Вы пытались явно установить цвет переднего плана на что-то другое, если текущая строка не соответствует вашим критериям?

+0

Вы совершенно правы! Это похоже на память цвета. Я устанавливаю setForeground (null); в остальном, и он отлично работает! – LeeP

+0

Да; 'TableCellRenderer' используются как «резиновые штампы» - атрибуты метки, используемые для рендеринга, не изменяются (кроме самого текста), если вы не измените их. – Josh