gpt4 book ai didi

java - JFace:为特定节点扩展更多级别

转载 作者:行者123 更新时间:2023-12-02 06:32:30 25 4
gpt4 key购买 nike

当用户展开 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)
...

你知道我做错了什么或者如何以其他方式解决它吗?

干杯,菲尔

最佳答案

您无法在监听器中调用诸如 expandToLevel 之类的 View 方法,因为查看器已经在处理展开,并且无法在执行此操作时处理另一个展开。

您可以在 treeExpanded 方法中使用 Display.asyncExec 在当前展开完成后运行 expandToLevel

关于java - JFace:为特定节点扩展更多级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19938295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com