对于我在使用大型 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 和 Windows7 上删除 500 个项目需要大约 15 毫秒,这只是打印我使用的时间戳的开销。
好的 :)
最佳答案
您应该使用 table.setRedraw() 而不是 table.setVisible()。 Control 上的这种方法的目的正是在昂贵的更新期间抑制绘图操作。
关于swt - 从 SWT 表中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2678796/