【问题标题】:JFace: Expand more levels for specific nodesJFace:为特定节点扩展更多级别
【发布时间】:2013-11-25 03:21:52
【问题描述】:

当用户在我的 TreeViewer 中展开特定节点时,它应该展开两层而不是一层。所以我添加了以下代码:

viewer.addTreeListener(new ITreeViewerListener() {
            public void treeCollapsed(TreeExpansionEvent event) {
            }

            public void treeExpanded(TreeExpansionEvent event) {
                if (event.getElement() instanceof Feature) {
                    Feature feature = (Feature) event.getElement();
                    viewer.expandToLevel(feature, 2);
                }
            }
        });

但我只在展开功能节点时收到此错误消息:

!MESSAGE Ignored reentrant call while viewer is busy. This is only logged once per viewer instance, but similar calls will still be ignored.
!STACK 0
java.lang.RuntimeException
    at org.eclipse.jface.viewers.ColumnViewer.checkBusy(ColumnViewer.java:781)
    at org.eclipse.jface.viewers.AbstractTreeViewer.expandToLevel(AbstractTreeViewer.java:1071)
...

任何想法我做错了什么或如何以其他方式解决它?

干杯, 菲尔

【问题讨论】:

    标签: java eclipse jface treeviewer treelistview


    【解决方案1】:

    您不能在侦听器中调用 expandToLevel 之类的视图方法,因为查看器已经在处理展开,并且在执行此操作时并非旨在处理另一个展开。

    您可以在 treeExpanded 方法中使用 Display.asyncExec 在扩展电流完成后运行 expandToLevel

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 2010-10-05
      相关资源
      最近更新 更多