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次.我怎样才能使这个过程具有高效性?
| 归档时间: |
|
| 查看次数: |
284 次 |
| 最近记录: |