2010-03-04 2 views
0

Я реализовал JTable с именем scrTbl в программе, и я хочу иметь возможность изменять цвет текста в одном столбце этой таблицы на основе внешней логической переменной, называемой «вверх». Мой код, связанный с этими усилиями, выглядит следующим образом.Проблемы Java JTable TableCellRenderer

TableColumn tcol = scrTbl.getColumnModel().getColumn(9); 
tcol.setCellRenderer(new CustomTableCellRenderer()); 

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

     if (up && (row == nmbrStocks)) 
     { 
      cell.setForeground(Color.green); 
     } 
     if ((!up) && (row == nmbrStocks)) 
     { 
      cell.setForeground(Color.red); 
     } 
     return cell; 
    }//Component 
} //class getTableCell... 

Дело в том, чтобы установить цвет текста для столбца 9 и конкретной строки (индексированные nmbrStocks) до зеленого или красного цвета, основываясь на значении вверх.

Но когда он запускается, он устанавливает весь текст в зеленый цвет. Является ли рендеринг вызываемым каждый раз, когда ячейка в столбце 9 записывается или что такое протокол?

Заранее благодарим за любую помощь.

ответ

0

Поскольку вы только хотите изменить один столбец, настроить свой код, чтобы указать столбец, а также ряд

if (row == nmbrStocks && column == the_desired_column_you_wish_to_change) 
    { 
     if (up){ 
     cell.setForeground(Color.green); 
     }else{ 
     cell.setForeground(Color.red); 
     } 
    } 
Смежные вопросы