星云网格 - GridItem.setHeight()性能

ssd*_*uel 5 swt eclipse-plugin jface eclipse-rcp nebula

我在我的RCP应用程序中使用星云网格小部件.我已经向我的Grid添加了一个controlListener,它会在调整Grid Control时调整每个Grid行高.代码段如下:

@Override
public void controlResized(ControlEvent e) {
    GridColumn []cols = grid.getColumns();
    for (GridItem item : grid.getItems()) {
        GC gc = new GC(item.getDisplay());

        int max = 0;
        Point tb=null;
        for(GridColumn col : cols){
            tb = col.getCellRenderer().computeSize(gc, col.getWidth(), SWT.DEFAULT, item);
            max = Math.max(max, tb.y);
            if(max > hmax){
                break;
            }
        }

        if(hmax==-1){

        }else if(max > hmax){
            max=hmax;
        }

        gc.dispose();
        item.setHeight(max);
    }
}
Run Code Online (Sandbox Code Playgroud)

这样工作正常,即,每次用户调整任何列的大小时都会调整高度.但是每当网格行的数量巨大而不是数百到数千时,调整大小就不顺利.用户界面几秒钟内没有响应.在进行一些分析时,我可以缩小负责此延迟的声明.这是以下声明:

tb = col.getCellRenderer().computeSize(gc, col.getWidth(), SWT.DEFAULT, item);
Run Code Online (Sandbox Code Playgroud)

我能理解这个的原因.为每一行和一列调用上面的语句,这似乎是原因.对于2000行和5列的网格,此语句被调用10000次.我怎样才能使这个过程具有高效性?