从SWT表中删除项目

Dim*_*ima 4 swt eclipse-rcp

对于我在使用大型SWT表的RCP应用程序中追逐一段时间的问题,这更像是一个答案.

问题是SWT Table.remove(int start,int end)方法的性能.它提供了非常糟糕的性能 - 在我的Windows XP上每100个项目大约50毫秒.但真正的节目制作者是在Vista和Windows 7上,删除100个项目需要5秒钟!查看表格的源代码表明,在这次调用中有大量的窗口事件飞来飞去.这使得窗口系统瘫痪.

解决方案是在这次通话中隐藏该死的东西:

table.setVisible(false);
table.remove(from, to);
table.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

这确实很奇怪 - 在XP和Windows7上删除500个项目需要大约15毫秒,这只是打印我使用的时间戳的开销.

好:)

ral*_*stx 5

而不是table.setVisible(),你应该使用table.setRedraw().Control上的这种方法完全是为了在昂贵的更新过程中抑制绘图操作.