Java 如何在TreeViewer(JFace)项目上添加鼠标右键单击侦听器?

Java 如何在TreeViewer(JFace)项目上添加鼠标右键单击侦听器?,java,treeview,jface,Java,Treeview,Jface,我不知道如何在TreeViewer(JFace)项目上添加鼠标右键单击侦听器 这是我的源代码,我创建了一个类treeview从viewpart扩展: /* * Creates the tree. * * @return the tree object and create part control */ private TreeObject CreateTree() { TreeParent root = new TreeParent(""); DemoTreeMo

我不知道如何在TreeViewer(JFace)项目上添加鼠标右键单击侦听器

这是我的源代码,我创建了一个类treeview从viewpart扩展:

/* 
 * Creates the tree.
 * 
 * @return the tree object and create part control
 */
private TreeObject CreateTree() {
    TreeParent root = new TreeParent("");

    DemoTreeModel ctModel = new DemoTreeModel();
    List<String> listType = ctModel.getType();
    for (String type : listType) {
        TreeParent parentNode1 = new TreeParent(type);
        parentNode1.setLevel(1);

        List<String> listMachine = ctModel.getName(type);
        if (listMachine != null) {
            for (String machine : listMachine) {
                TreeParent childNode1 = new TreeParent(machine);
                childNode1.setLevel(2);
                parentNode1.addChild(childNode1);
                List<String> listVersion = ctModel.getVersion(machine);

                if (listVersion != null) {
                    for (String ver : listVersion) {
                        TreeObject version = new TreeObject(ver);
                        version.setLevel(3);
                        version.setData(ver);
                        childNode1.addChild(version);
                    }
                }
            }
        }
        root.addChild(parentNode1);
    }

    return root;
}
/*
*创建树。
* 
*@返回树对象并创建零件控件
*/
私有树对象CreateTree(){
树状根=新树状根(“”);
DemoTreeModel ctModel=新DemoTreeModel();
List listType=ctModel.getType();
for(字符串类型:listType){
TreeParent parentNode1=新的TreeParent(类型);
parentNode1.setLevel(1);
List listMachine=ctModel.getName(类型);
if(listMachine!=null){
用于(字符串机:listMachine){
TreeParent childNode1=新的TreeParent(机器);
childNode1.setLevel(2);
parentNode1.addChild(childNode1);
List listVersion=ctModel.getVersion(机器);
if(listVersion!=null){
for(字符串版本:listVersion){
TreeObject版本=新的TreeObject(版本);
版本。设置级别(3);
版本设置数据(版本);
childNode1.addChild(版本);
}
}
}
}
root.addChild(parentNode1);
}
返回根;
}

您可以使用以下内容:

MenuManager menuMgr = new MenuManager();
menuMgr.setRemoveAllWhenShown(true);

menuMgr.addMenuListener(new IMenuListener() {
    @Override
    public void menuAboutToShow(IMenuManager menuManager) {
        ... add items to menu manager
    }
});

Control tree = treeViewer.getControl();

Menu menu = menuMgr.createContextMenu(tree);

tree.setMenu(menu);

这是使用一个
IMenuListener
,它允许您在每次显示菜单时添加不同的菜单项,以便您能够适应所选内容。

让我试试,非常感谢!