求高手指导:
我想点击某个单元格改变其颜色(这个已经实现),接下来就是点击别的单元格 修改另一个单元格的颜色,但是以前修改过的单元格颜色保持更改,比如点了(2,2)设置为蓝色,然后点(3,3)设置为绿色,现在的问题是改了(3,3)后,(2,2)又变回原来的颜色了,有没有什么办法解决这个问题?谢谢啊。以前做过一个刷新List的用线程刷新,但是JTable和LIST不一样啊,求大牛指导一下,不胜感激。最好能详细点,分不是问题。
我想点击某个单元格改变其颜色(这个已经实现),接下来就是点击别的单元格 修改另一个单元格的颜色,但是以前修改过的单元格颜色保持更改,比如点了(2,2)设置为蓝色,然后点(3,3)设置为绿色,现在的问题是改了(3,3)后,(2,2)又变回原来的颜色了,有没有什么办法解决这个问题?谢谢啊。以前做过一个刷新List的用线程刷新,但是JTable和LIST不一样啊,求大牛指导一下,不胜感激。最好能详细点,分不是问题。
public class ChangeColor {
int r,c,f;
public void changeColor(final JTable table,final int a,final int b,int flag){
r=a;
c=b;
f=flag;
System.out.println("changcolor flag == "+f);
table.setDefaultRenderer(Object.class,new EvenOddRenderer());//为JTable增加渲染器,因为是针对于表格中的所有单元格,所有用Object.class
}
class EvenOddRenderer implements TableCellRenderer { public final DefaultTableCellRenderer DEFAULT_RENDERER =
new DefaultTableCellRenderer(); public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Component renderer =
DEFAULT_RENDERER.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
Color foreground, background;
System.out.println("changcolor f= "+f);
if (row == r&&column==c&&f==1) {
foreground = Color.BLACK;
background = Color.YELLOW;
}else if(row == r&&column==c&&f==2){
foreground = Color.BLACK;
background = Color.GREEN;
}else if(row == r&&column==c&&f==3){
foreground = Color.BLACK;
background = Color.YELLOW;
}else if(row == r&&column==c&&f==4){
foreground = Color.BLACK;
background = Color.GREEN;
}else if(row == r&&column==c&&f==5){
foreground = Color.BLACK;
background = Color.PINK;
}else {
foreground = Color.BLACK;
background = Color.GREEN;
}
renderer.setForeground(foreground);
renderer.setBackground(background);
return renderer;
}
}}
封装到ChangeColor 类是因为 我不是点击单元格改变颜色 而是点击Button后获取到当前单元格的row和col然后改变颜色 这个因为其他需求 所以必须这样写。