尝试将菜单添加到TableViewer的标题行(标题行)

时间:2014-01-07 14:52:52

标签: java eclipse-plugin jface

我正在尝试将菜单中的操作添加到TableViewer的标题(标题)。

这是我现在使用的代码:

    viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL 
                                         | SWT.FULL_SELECTION | SWT.BORDER);
    //...

    MenuManager manager = new MenuManager();
    viewer.getControl().setMenu(manager.createContextMenu(viewer.getControl()));


    manager.add(new Action("MENU ITEM TEXT") {
        @Override
        public void run() {
            // get the current selection of the tableviewer
            IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
            // do something
            if (selection.getFirstElement() instanceof MyObject)
                return;
            System.out.println("OK: "+selection.getFirstElement().getClass().getName());
        }
    });

这就是它的样子:

enter image description here

问题是菜单会添加到整个TableViewer,而不仅仅是标题行。 因为对于其他行,我需要使用不同的菜单。 我试图找到一种方法只将动作添加到顶行(标题行),但到目前为止没有成功。

那么如何才能为标题添加菜单呢?

2 个答案:

答案 0 :(得分:1)

您在表格中添加MouseListener,然后检查以下内容:

  1. 单击鼠标右键单击按钮。
  2. 事件的指针位于您的表项的范围内(即您的第一个TableItem - 您将使用table.getItem(Point))。
  3. 如果满足这些条件,则在鼠标位置打开菜单。

答案 1 :(得分:1)

实际上,here是一个如何做到这一点的片段。