如何为jface Treeviewer创建鼠标右键菜单

维诺德·拉伊

我已经创建了一个TreeViewer使用JFace的应用程序,但是现在我必须在节点上添加一个右键单击侦听器。右键单击后,必须显示一个菜单,如下所示:

  1. 做点什么
  2. 没做什么
  3. 删除

我正在尝试这样做,但它抛出一个空指针异常。

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

        menuMgr.addMenuListener(new IMenuListener() {
            @Override
            public void menuAboutToShow(IMenuManager menuManager) {

                IContributionManager menu = null;
                MenuItem[] items = (MenuItem[]) menu.getItems();
                for (int i = 0; i < items.length; i++)
                    items[i].dispose();

                MenuItem itemCollectionFolder = new MenuItem((Menu) menu, SWT.NONE);
                itemCollectionFolder.setText("Add Something" );

                MenuItem itemNewTestCase = new MenuItem((Menu) menu, SWT.NONE);
                itemNewTestCase.setText("Do Nothing" );

            }
        });

        Control tree = treeViewer.getControl();

        Menu menu = menuMgr.createContextMenu(tree);

        tree.setMenu(menu);
黄酮

试试这个,别忘了调用:createContextMenu(viewer);

/**
 * Creates the context menu
 *
 * @param viewer
 */
protected void createContextMenu(Viewer viewer) {
    MenuManager contextMenu = new MenuManager("#ViewerMenu"); //$NON-NLS-1$
    contextMenu.setRemoveAllWhenShown(true);
    contextMenu.addMenuListener(new IMenuListener() {
        @Override
        public void menuAboutToShow(IMenuManager mgr) {
            fillContextMenu(mgr);
        }
    });

    Menu menu = contextMenu.createContextMenu(viewer.getControl());
    viewer.getControl().setMenu(menu);
}

/**
 * Fill dynamic context menu
 *
 * @param contextMenu
 */
protected void fillContextMenu(IMenuManager contextMenu) {
    contextMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));

    contextMenu.add(new Action("Do Something") {
        @Override
        public void run() {
            // implement this
        }
    });
    contextMenu.add(new Action("Do Nothing") {
        @Override
        public void run() {
            // don't do anything here
        }
    });
    contextMenu.add(new Action("Delete") {
        @Override
        public void run() {
            // implement this
        }
    });
}

要获取treeviewer的选定元素,请执行以下操作:

IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
selection.getFirstElement();
selection.toList(); // or if you handle multi selection

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何为GWT单元格表创建右键单击下拉菜单

来自分类Dev

如何从Gnome上的Nautilus右键菜单启用文件创建?

来自分类Dev

如何使用鼠标滚动创建菜单滚动

来自分类Dev

如何为弹出菜单创建子菜单?

来自分类Dev

如何在文件夹/目录的鼠标右键菜单中添加“在终端中打开”?

来自分类Dev

如何设置Xubuntu以在桌面上单击鼠标右键显示“应用程序”菜单?

来自分类Dev

如何在TableView rowDelegate中单击鼠标右键显示上下文菜单

来自分类Dev

如何设置Xubuntu以在桌面上单击鼠标右键显示“应用程序”菜单?

来自分类Dev

如何在文件夹/目录的右键单击鼠标菜单中添加“在终端中打开”?

来自分类Dev

如何在TableView rowDelegate中单击鼠标右键显示上下文菜单

来自分类Dev

如何在单击鼠标左键而不是单击鼠标右键时打开D3.js上下文菜单

来自分类Dev

如何在单击鼠标左键而不是单击鼠标右键时打开D3.js上下文菜单

来自分类Dev

JFace TreeViewer上的RowFilter

来自分类Dev

JFace TreeViewer上的RowFilter

来自分类Dev

如何为菜单创建平滑的动画?

来自分类Dev

如何为垂直导航菜单创建ID?

来自分类Dev

如何正确检测鼠标右键?

来自分类Dev

如何限制在nsoutline视图上单击鼠标右键的显示菜单项仅适用于几行?

来自分类Dev

dojo tabContainer-如何在鼠标右键单击弹出菜单下获取选项卡ID不在焦点的问题

来自分类Dev

创建右键菜单时,如何保留原始的复制和粘贴功能?

来自分类Dev

如何创建右键单击菜单项来操纵交汇点?

来自分类Dev

如何在HTML中的li项上创建右键单击自定义菜单

来自分类Dev

7zip-如何使用右键菜单创建目录内容的存档

来自分类Dev

用鼠标右键单击时,如何为ContextMenu上的特定项目着色?

来自分类Dev

如何在JFace的TableViewer中创建复选框?

来自分类Dev

如何为创建循环

来自分类Dev

如何为多个鼠标悬停事件创建单个样式?

来自分类Dev

在文件夹或文件上单击鼠标右键时,如何创建Automator服务以gzip或bzip格式压缩文件?

来自分类Dev

如何为notifyicon制作菜单?

Related 相关文章

  1. 1

    如何为GWT单元格表创建右键单击下拉菜单

  2. 2

    如何从Gnome上的Nautilus右键菜单启用文件创建?

  3. 3

    如何使用鼠标滚动创建菜单滚动

  4. 4

    如何为弹出菜单创建子菜单?

  5. 5

    如何在文件夹/目录的鼠标右键菜单中添加“在终端中打开”?

  6. 6

    如何设置Xubuntu以在桌面上单击鼠标右键显示“应用程序”菜单?

  7. 7

    如何在TableView rowDelegate中单击鼠标右键显示上下文菜单

  8. 8

    如何设置Xubuntu以在桌面上单击鼠标右键显示“应用程序”菜单?

  9. 9

    如何在文件夹/目录的右键单击鼠标菜单中添加“在终端中打开”?

  10. 10

    如何在TableView rowDelegate中单击鼠标右键显示上下文菜单

  11. 11

    如何在单击鼠标左键而不是单击鼠标右键时打开D3.js上下文菜单

  12. 12

    如何在单击鼠标左键而不是单击鼠标右键时打开D3.js上下文菜单

  13. 13

    JFace TreeViewer上的RowFilter

  14. 14

    JFace TreeViewer上的RowFilter

  15. 15

    如何为菜单创建平滑的动画?

  16. 16

    如何为垂直导航菜单创建ID?

  17. 17

    如何正确检测鼠标右键?

  18. 18

    如何限制在nsoutline视图上单击鼠标右键的显示菜单项仅适用于几行?

  19. 19

    dojo tabContainer-如何在鼠标右键单击弹出菜单下获取选项卡ID不在焦点的问题

  20. 20

    创建右键菜单时,如何保留原始的复制和粘贴功能?

  21. 21

    如何创建右键单击菜单项来操纵交汇点?

  22. 22

    如何在HTML中的li项上创建右键单击自定义菜单

  23. 23

    7zip-如何使用右键菜单创建目录内容的存档

  24. 24

    用鼠标右键单击时,如何为ContextMenu上的特定项目着色?

  25. 25

    如何在JFace的TableViewer中创建复选框?

  26. 26

    如何为创建循环

  27. 27

    如何为多个鼠标悬停事件创建单个样式?

  28. 28

    在文件夹或文件上单击鼠标右键时,如何创建Automator服务以gzip或bzip格式压缩文件?

  29. 29

    如何为notifyicon制作菜单?

热门标签

归档