2012-07-19 60 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会产生所需的结果。你必须以某种有意义的方式

这可能来自于表中的数据模型或通过其他方式