如何停止最小化,滚动窗格,调整所有我的jtable着色

时间:2016-04-18 10:12:31

标签: java swing jtable background-color tablecellrenderer

正如你在我的照片中看到的那样:

在最小化之前:

http://i.stack.imgur.com/yBbbt.png

最小化后

http://i.stack.imgur.com/UJXQ1.png

我的渲染器采用了最后使用的颜色并绘制了我的所有表格。

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);
}

1 个答案:

答案 0 :(得分:1)

  1. 您有两次拨打public function register(){ return view('register.form'); } 。摆脱第二个。此外,无需将第一个调用转换为标签。该方法返回一个具有setBackground()方法的Component。

  2. 您不需要方法上的super.getTableCellRendererComponent(...)关键字。