我有一个jtable有2格一格做了一个按牛放上去,另外一格用来显示刚刚现在的颜色!
  我写了一个MytTableCellRenderer,要传入一个颜色,然后MytTableCellRenderer render = new MytTableCellRenderer(listTable
.getCellRenderer(listTable.getSelectedRow(), 4),
colorChooser.getColor());
tableColumn.setCellRenderer(render);
好象只能对列起作用,现在选一下整个列都变了,现在就是想对一个特定的行,其他行颜色不变,怎么做??
 class MytTableCellRenderer implements TableCellRenderer {
private TableCellRenderer renderer;
private Color color;
        private Color oldColor=null;
public MytTableCellRenderer(TableCellRenderer renderer, Color color) {
this.renderer = renderer;
this.color = color;
} public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
Component c = renderer.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);

if((row==table.getSelectedRow()) && (column==4)){
if (isSelected()) {
c.setBackground(c.getBackground());
oldColor=color;
c.setBackground(color);
} else {
c.setBackground(table.getBackground());
}
}

return c;
} public boolean isSelected() {
return true;
}
}

解决方案 »

  1.   

    if((row==table.getSelectedRow())   &&   (column==4)){ 
    if   (isSelected())   { 
    c.setBackground(c.getBackground()); 
    oldColor=color; 
    c.setBackground(color); 
    }   else   { 
    c.setBackground(table.getBackground()); 


    问题好像在这里.
    行等于选择行, 列是第5列的背景色设置了.
    问题是不是选择行或者不是第五列的背景色没有被设置回来.
    如果你没有设置其他renderer的话, 这个背景色可是会被带着画其他cell的
      

  2.   

    是的  该列的其他行颜色,和刚刚选择的颜色一样,即使我把row==table.getSelectedRow())       去了只留column还是没有用,还是把刚刚选择的颜色给覆盖了
      

  3.   

    我也有类似的问题,talbe的某列要根据另一列的内容决定字体的颜色,请问有什么解决办法
      

  4.   


    if((row==table.getSelectedRow()) && (column==4)){
    if (isSelected()) {
    JLabel label = new JLabel();
    label.setBackground(c.getBackground());
    oldColor=color;
    label.setBackground(color);
    return label;
    } else {
    c.setBackground(table.getBackground());
    }
    }return c;
      

  5.   


    JLabel label = new JLabel(((JLabel)c).getText());