正如你在我的照片中看到的那样:
在最小化之前:
最小化后
我的渲染器采用了最后使用的颜色并绘制了我的所有表格。
Bellow是我的自定义渲染器类:
public class MyCellRenderer extends DefaultTableCellRenderer {
public static double fstValue;
public static double sndValue;
public MyCellRenderer() { }
public MyCellRenderer(double fstValue, double sndValue) {
this.fstValue = fstValue;
this.sndValue = sndValue;
//System.out.println(this.fstValue+" 2ndvalue"+this.sndValue+" ston constructor");
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if(!isSelected) {
if(compare(this.fstValue,this.sndValue)== 1){
c.setBackground(Color.GREEN);
}else if (compare(this.fstValue,this.sndValue)== -1) {
c.setBackground(Color.red);
}else{
c.setBackground(null);
}
}
return c;
}
}
我正在快速更新表格,我对此没有任何问题。
但是当我调整大小或缩小或向下滚动时,颜色会发生变化。
当我最小化并调整大小时,我的表格会全部改变颜色,但是当我向下滚动时,我滚动的表格会改变颜色。
我怀疑它与我的渲染器调用的重绘或绘制方法有关,并且无法修复它。
我使用线程,每个线程调用下面的代码进行更新:
if( home.text().equals(hometmp.toString())==false)
{
MyCellRenderer cellRenderer = new MyCellRenderer(valuehm,valuehmt);
table1.setValueAt(home.text(),i-1,1);
}
答案 0 :(得分:1)
您有两次拨打public function register(){
return view('register.form');
}
。摆脱第二个。此外,无需将第一个调用转换为标签。该方法返回一个具有setBackground()方法的Component。
您不需要方法上的super.getTableCellRendererComponent(...)
关键字。