【问题标题】:SWT TreeViewer is slow when filling with many elements填充许多元素时 SWT TreeViewer 很慢
【发布时间】:2011-11-27 13:43:52
【问题描述】:

我是 Java 世界的新手,如果我的问题是微不足道的,我很抱歉。

我正在开发一个 Eclipse 视图部件,并且我正在使用以下数据结构填充一个 SWT 树视图。所有数据都在内存中:

Node1
   Child1
   Child2
Node2
   Child1
   ...
   Child2915

我认为那不是一棵很大的树,但绘制速度很慢(10 秒)。我在 .NET 中管理了超过 10.000 个元素的树,并且加载顺利。我不知道我是否已经实现了代码,但是如果我不调用BeginUpdate() - EndUpdate(),同样的问题出现在.NET中。

我必须在 Java/SWT 中调用类似的东西吗?关于树为什么这么慢的任何其他提示?

【问题讨论】:

    标签: java eclipse eclipse-plugin swt eclipse-rcp


    【解决方案1】:

    您可以在创建树时使用SWT.VIRTUAL 标志来帮助提高性能

    欲了解更多信息,请参阅Virtual Trees and Tables上的这篇文章

    这也可以与 JFace TreeViewer 结合使用。有关更多详细信息,请参阅JFace TreeViewer 上的这篇文章(虽然这里没有特别提到虚拟标志)

    【讨论】:

      【解决方案2】:

      最后,我在 TreeViewer 中调用 refresh 后使用了 setRedraw(boolean value)

      public void refresh() {
          try {
              mTreeViewer.getControl().setRedraw(false);
              mTreeViewer.refresh(true);
              mTreeViewer.expandAll();
          }
          finally {
              mTreeViewer.getControl().setRedraw(true);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-16
        • 1970-01-01
        • 2015-01-13
        相关资源
        最近更新 更多