有 Java 编程相关的问题?

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

java如何为treeviewer动态生成子菜单上下文

我已经为treeviewer填充了上下文菜单,但现在我需要动态填充treeviewer的子菜单上下文。子上下文菜单应该包含列表中的所有内容。例如,列表包含[a,b,c,d,e],所以现在主菜单有菜单a,子菜单必须包含列表中的所有元素,这可以做到吗

菜单结构应如下所示 A->;A. B C D e

现在上下文菜单的代码如下

protected void fillContextMenu(final IMenuManager contextMenu) {
        //String nnn = null;
        //contextMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
        //contextMenu.add(new GroupMarker(nnn));

         IMenuManager submenu = new MenuManager("Add Test Case");

            submenu.add(new Action("Sub menu item 1") {
                 @Override
                 public void run() {
                     // implement this
                 }
             });

           contextMenu.add(submenu);



        contextMenu.add(new Action("Add Test step") {
            @Override
            public void run() {
                // don't do anything here
            }
        });
        contextMenu.add(new Action("Add New Test Case") {
            @Override
            public void run() {
                // implement this
            }


        });

}

那么现在我们如何生成列表中包含的动态子上下文菜单呢


共 (1) 个答案

  1. # 1 楼答案

    首先确保

    IMenuManager.setRemoveAllWhenShown(true);
    

    在创建关联菜单时调用。这意味着每次显示菜单时都会调用fillContextMenu

    然后,您只需在列表中循环,为^{中的列表中的每个项目创建操作:

    List<String> itemList = .... your list
    
    for (String item : itemList)
     {
       submenu.add(new Action(item) {
             @Override
             public void run() {
                   // implement this
             }
       });
     }