2013-06-03 7 views
0

У меня есть JTable следующим образом:Изменение цвета строки в JTable

enter image description here

Я хочу, чтобы, когда значение в Quantité меньше, чем значение в Min seuil de suantité, чтобы изменить цвет ряд к розовому.

В загрузке программы все работает нормально, но когда я делаю какое-либо событие, например, щелчок по таблице, цвет всех строк изменяется, даже если значение Quantité не меньше значения Min seuil de quantité:

enter image description here

это моя клетка рендеринга:

public class CustomTableCellRenderer extends DefaultTableCellRenderer { 
    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); 

     setHorizontalAlignment(SwingConstants.LEFT); 

     int selectedRow = table.convertRowIndexToModel(row); 
     if (table.getModel().getValueAt(selectedRow, 3) != null && table.getModel().getValueAt(selectedRow, 4) != null) { 
      int quantite = Integer.parseInt(table.getModel().getValueAt(selectedRow, 3).toString()); 
      int minQuantite = Integer.parseInt(table.getModel().getValueAt(selectedRow, 4).toString()); 
      if (quantite < minQuantite) { 
       if (isSelected) { 
        cell.setBackground(new Color(255, 138, 239)); 
       } else { 
        cell.setBackground(new Color(252, 189, 252)); 
       } 
      } 
     } 
     return cell; 
    } 
} 

и это код, который позволяет мне воздействовать на клетки рендеринга к моему столику:

private void cellRendering(){ 
     for (int i = 0; i < masterTable.getColumnCount(); i++) { 
      tcol = masterTable.getColumnModel().getColumn(i); 
      tcol.setCellRenderer(new CustomTableCellRenderer()); 
     } 
    } 

ответ

1

renderer является резиновый штамп, что помнит то, что чернила был применен в прошлом. Обязательно устанавливайте желаемый цвет при каждом вызове рендерера. Более подробную информацию вы можете найти here.

+1

@ user2417302 не так, снова та же проблема, действительно время для использования prepareRenderer, не разбирайте все, что хранится в XxxTableModel, кладите туда Double, Integer, независимо от экземпляра Number, большая часть проблемы будет решена путем публикации SSCCE, короткой , runnable, compilable, с жестко запрограммированным значением для XxxTableModel – mKorbel

+0

@ user2417302 для остальной (любой) проблемы, чтобы [видеть мое сообщение о] (http://stackoverflow.com/q/16814512/714968), я уверен, что видел очень похожий вопрос на другом форуме Java или я ошибаюсь – mKorbel

Смежные вопросы