2013-06-03 361 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來解決, ,可運行,可編譯,其硬編碼值爲XxxTableModel – mKorbel

+0

@ user2417302其餘任何問題[查看我的帖子](http://stackoverflow.com/q/16814512/714968),我相信我看到非常類似於另一個Java論壇的問題或錯誤 – mKorbel