我有一个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;
}
}
我写了一个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;
}
}
if (isSelected()) {
c.setBackground(c.getBackground());
oldColor=color;
c.setBackground(color);
} else {
c.setBackground(table.getBackground());
}
}
问题好像在这里.
行等于选择行, 列是第5列的背景色设置了.
问题是不是选择行或者不是第五列的背景色没有被设置回来.
如果你没有设置其他renderer的话, 这个背景色可是会被带着画其他cell的
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;
}
JLabel label = new JLabel(((JLabel)c).getText());