jTable中设置指定行的颜色,程序如下,但是只有最后一行颜色设定成功,是怎么回事呢?
DefaultTableCellRenderertcr=newDefaultTableCellRenderer(){publicComponentgetTableCell...
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
for(int j=0;j<errorRow.size();j++){
if(row == errorRow.get(j))
setBackground(Color.red);
else
setBackground(Color.white);
}
return super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
}
}; 展开
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
for(int j=0;j<errorRow.size();j++){
if(row == errorRow.get(j))
setBackground(Color.red);
else
setBackground(Color.white);
}
return super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
}
}; 展开
展开全部
你的程序有问题,中间应改为:
setBackground(Color.white);
for(int j=0;j<errorRow.size();j++){
if(row == errorRow.get(j)) setBackground(Color.red);
}
另外,不知道你的errorRow是个什么类型的对象,如果是Collection之类的(如List、Set等),可以不用循环,直接用它的contains方法,则上述改为:
if(errorRow.contains(row)){
setBackground(Color.red);
}else{
setBackground(Color.white);
}
当然了,这样涉及到了基本类型的自动装箱和拆箱,效率可能会稍低一点。
最后给一点建议,if和else的块最好都用大括号括起来。
setBackground(Color.white);
for(int j=0;j<errorRow.size();j++){
if(row == errorRow.get(j)) setBackground(Color.red);
}
另外,不知道你的errorRow是个什么类型的对象,如果是Collection之类的(如List、Set等),可以不用循环,直接用它的contains方法,则上述改为:
if(errorRow.contains(row)){
setBackground(Color.red);
}else{
setBackground(Color.white);
}
当然了,这样涉及到了基本类型的自动装箱和拆箱,效率可能会稍低一点。
最后给一点建议,if和else的块最好都用大括号括起来。
微测检测5.10
2023-05-10 广告
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇...
点击进入详情页
本回答由微测检测5.10提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询