2016-03-02 3 views
1

Вот часть кода моего проекта. Я пытаюсь изменить цвет десенсибилизированных ячеек. Но когда я его пытаюсь, меняется цвет всех ячеек. Почему это ? Спасибо.JTable cellRenderer не меняет только дезинформированные ячейки

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' также во внимание, т.е. не устанавливайте какой-либо фон, это 'истина'. Чаще всего стандартный цвет фона - 'table.getBackground()'. –

+0

большое спасибо. Я понимаю. –