2010-03-04 41 views
0

我在一個程序中實現了一個名爲scrTbl的JTable,我希望能夠根據名爲「up」的外部布爾變量來改變此表的一列中的文本顏色。我的代碼與這項工作相關如下。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); 
     } 
    }