【问题标题】:Remove items from SWT tables从 SWT 表中删除项目
【发布时间】:2010-04-20 21:28:44
【问题描述】:

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

问题在于 SWT Table.remove(int start, int end) 方法的性能。它提供了非常糟糕的性能 - 在我的 Windows XP 上每 100 个项目大约需要 50 毫秒。但真正的阻碍是在 Vista 和 Windows 7 上,删除 100 个项目最多需要 5 秒!查看 Table 的源代码可以发现,在这个调用中有大量的窗口事件飞来飞去。这让窗口系统崩溃了。

解决方案是在通话期间隐藏该死的东西:

table.setVisible(false);
table.remove(from, to);
table.setVisible(true);

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

不错:)

【问题讨论】:

    标签: swt eclipse-rcp


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-10
      • 1970-01-01
      • 2022-12-20
      • 2016-05-08
      • 2011-03-18
      • 2020-12-07
      • 2010-11-29
      相关资源
      最近更新 更多