从SWT表中删除项目

时间:2010-04-20 21:28:45

标签: 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);

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

很好:)

1 个答案:

答案 0 :(得分:5)

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