有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Eclipse RCP,RAP,如何从插件加载的另一个视图填充树

我想制作一个动态应用程序,当另一个插件加载时,我想在Tree中添加TreeItem

例如:

  1. 我有一个插件:com.project.startup,这个插件有一个View和一个Tree在里面。这个
  2. 我有插件:com.project.populator。我想在com.project.populator开始时从com.project.startup填充Tree

我知道如何添加项目,但不知道何时何地必须编写代码

到目前为止,我使用org.eclipse.ui.IStartup实现了这一点,但我得到了以下错误:

!MESSAGE Unable to execute early startup code for an extension
!STACK 0
java.lang.NullPointerException
    at ro.project.populator.TreePopulator.earlyStartup(TreePopulator.java:18)

我的代码如下所示:

public class TreePopulator implements IStartup
{

    @Override
    public void earlyStartup()
    {
        ViewMenuOffers viewMenuOffers = (ViewMenuOffers) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ViewMenuOffers.ID);
        TreeViewer treeViewer = viewMenuOffers.getTreeViewer();
        Tree tree = treeViewer.getTree();
        TreeItem trtmItem = new TreeItem(tree, SWT.NONE);
        trtmItem.setText("Item 1");
    }
}

我认为TreeViewer没有初始化。。但它在{}的{}中

我怎样才能做到这一点?如何在启动时从另一个插件向View添加内容


共 (1) 个答案

  1. # 1 楼答案

    我找到了答案。可以这样做:

    public class TreePopulator implements IStartup
    {
    
        @Override
        public void earlyStartup()
        {
            PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
    
                @Override
                public void run()
                {
                    ViewMenuOffers viewMenuOffers = (ViewMenuOffers) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ViewMenuOffers.ID);
                    TreeViewer treeViewer = viewMenuOffers.getTreeViewer();
                    Tree tree = treeViewer.getTree();
    
                    TreeItem trtmS = new TreeItem(tree, SWT.NONE);
                    trtmS.setText("Test");
    
                }
    
            });
    
        }
    
    }