2016-03-02 3 views
1

Voici une partie du code de mon projet. Je suis essayer de changer la couleur des cellules désirées. Mais quand je l'essaie, toutes les cellules changent de couleur. Pourquoi donc ? Merci.JTable cellRenderer ne change pas seulement les cellules désirées

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

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

Répondre

1

Je pense que vous devez restaurer la couleur d'origine.

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

mieux prendre en compte 'isSelected' ainsi, c'est-à-dire ne pas définir d'arrière-plan, c'est vrai. Le plus souvent, la couleur d'arrière-plan standard est 'table.getBackground()'. –

+0

merci beaucoup. j'ai compris. –