Java 如何在RCP中将数据选择从JFace Treeviewer解析到另一个视图?

Java 如何在RCP中将数据选择从JFace Treeviewer解析到另一个视图?,java,eclipse-rcp,jface,Java,Eclipse Rcp,Jface,在我的申请中。我有一个Treeviewer当我在树上选择一个项目时,另一个视图将打开,我想将数据从我的树解析到新视图。如何才能做到这一点?首先,添加一个选择侦听器。发生选择事件时,构建要传递到视图的数据(您可能希望将event.getSeletion()强制转换为TreeSelection并在树路径上迭代)。最后,打开您的视图(或者您可以查找一个视图,如果它已经打开,只需激活它)并传递您的模型。它可能看起来像这样: treeViewer.addSelectionChangedLi

在我的申请中。我有一个
Treeviewer
当我在树上选择一个项目时,另一个视图将打开,我想将数据从我的树解析到新视图。如何才能做到这一点?

首先,添加一个选择侦听器。发生选择事件时,构建要传递到视图的数据(您可能希望将event.getSeletion()强制转换为TreeSelection并在树路径上迭代)。最后,打开您的视图(或者您可以查找一个视图,如果它已经打开,只需激活它)并传递您的模型。它可能看起来像这样:

        treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {

            @Override
            public void selectionChanged(SelectionChangedEvent event) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                Object model = selection.getFirstElement();
                try {
                    YourView view = (YourView) getSite().getPage().showView("your_view_id");
                    view.setModel(model);
                } catch (PartInitException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
    });

我想值得一提的是,setModel是@user3422401需要在类中定义的一个方法,它不是一个ViewPartmethod@VladIlie,thnx进行澄清。我想从打开的视图类型可以清楚地看到=)谢谢你的回答。当我在谷歌上搜索时,我看到了呼叫选择服务。在这种情况下我能用它吗?如果我能,我怎么能用它?你可以用它,尽管对我来说,这对你的案子来说似乎有点过分了。选择服务是在您的工作台部件(如视图)之间进行通信的更通用的方式,但在您的情况下,您似乎有一个非常简单的场景,我所发布的代码很容易涵盖这个场景。下面是一篇关于选择服务的好文章: