2012-07-19 59 views
0

在我之前的問題的答案Coloring jTable row中,但現在我不確定是否有新問題出現,請將顏色設置爲行。但我想從循環中給它,意味着我想爲第i行設置顏色。我給了我所用,動態着色jTable行

for(int i=0;i<serialNumber;i++){ 
    if((jTable1.getValueAt(i,1).toString()).equals(BidNumber)){ 
    Enumeration<TableColumn> en = jTable1.getColumnModel().getColumns(); 
    while (en.hasMoreElements()) { 
     TableColumn tc = en.nextElement(); 

     tc.setCellRenderer(new MyTableCellRenderer()); 
    } 
} 

它會調用該方法的CellRenderer,

public class MyTableCellRenderer extends DefaultTableCellRenderer implements TableCellRenderer { 

     @Override 
     public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { 
      setBackground(null); 
      super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 

       boolean interestingRow = row ==1; 



      if (interestingRow) { 
       setBackground(Color.YELLOW); 
      } 

      return this; 
     } 

    } 

在這裏,我試圖把顏色行時第一列的值等於BidNumber ,但在cellrenderer(這裏),它設置爲行== 1,然後每次當條件爲真時,第一行將被着色......如何將它設置爲第i行?

+0

你的意思是要提供由'行更換條件'行== == 1'定義i' n? – 2012-07-19 10:14:14

+0

是的。我想爲第i行設置顏色 – Luna 2012-07-19 10:15:03

+0

那麼這裏有什麼問題?有什麼阻止你這麼做? – 2012-07-19 10:17:03

回答

2

更改boolean interestingRow = row ==1以滿足您的要求,其中row == n會產生所需的結果。你必須以某種有意義的方式

這可能來自於表中的數據模型或通過其他方式