2016-03-02 55 views
1

这是我的项目的代码部分。 我试图改变desingated细胞的颜色。但是当我尝试它时,所有单元格的颜色都在变化。这是为什么 ? 谢谢。JTable cellRenderer不会改变desingated单元

private class cellRenderer extends DefaultTableCellRenderer { 

    @Override 
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { 

     Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 
     if(row==column){ 
      cell.setBackground(Color.yellow); 
     }  
     return cell; 
    } 
} 
+1

http://stackoverflow.com/questions/17732005/trying-to-color-specific-cell-in-jtable-gettablecellrenderercomponent-overide –

回答

1

我认为你需要恢复原来的颜色。

private class cellRenderer extends DefaultTableCellRenderer { 
    Color originalColor = null; 

    @Override 
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { 

     Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 


     if (originalColor == null) { 
      originalColor = cell.getBackground(); 
     } 

     if(row==column){ 
      cell.setBackground(Color.yellow); 
     } else { 
      cell.setBackground(originalColor); 
     } 

     return cell; 
    } 
} 
+0

最佳的可能重复采取'isSelected'考虑为好,即不设置任何背景,它是'true'。大多数情况下,标准背景颜色是'table.getBackground()'。 –

+0

非常感谢。我知道了。 –