swt - 从 SWT 表中删除项目

标签 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 和 Windows7 上删除 500 个项目需要大约 15 毫秒,这只是打印我使用的时间戳的开销。

好的 :)

最佳答案

您应该使用 table.setRedraw() 而不是 table.setVisible()。 Control 上的这种方法的目的正是在昂贵的更新期间抑制绘图操作。

关于swt - 从 SWT 表中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2678796/

相关文章:

java - Control类的moveBelow方法有什么作用?

eclipse - 如何为扩展 FormEditor 类的编辑器启用“保存”和“另存为”操作

java - e4模型下MMenuElement助记符用法

java - 如何将 Eclipse-RCP 应用程序限制为单个实例?

java - 在 SWT 中将多个图像加载到滚动合成中

java - 如何在 SWT 中强制 StyledText 换行

java - Eclipse 浏览器控件(嵌入式 IE)可以在 Swing 应用程序中使用吗?

java - 如何将标签移动到新行?

java - 不接受来自外部资源管理器的 Eclipse RCP 放置文件

eclipse-plugin - 使用 Rhino : classloader belongs to the plugin providing Rhino, 编写 Eclipse 脚本,而不是使用它的插件