Java 正在尝试将菜单添加到TableViewer';s标题行(标题行)

Java 正在尝试将菜单添加到TableViewer';s标题行(标题行),java,eclipse-plugin,jface,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 MenuManag

我正在尝试将操作添加到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());
        }
    });
这就是它的样子:

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


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

向表中添加一个
鼠标侦听器,然后检查以下内容:

  • 单击按钮是鼠标右键单击
  • 事件指针位于表项的边界内(即,第一个
    TableItem
    ——您将使用
    table.getItem(Point)

  • 如果满足这些条件,您可以在鼠标位置打开菜单。

    实际上,这是一个如何实现的片段。

    列标题没有单独的控件,因此我认为这是不可能实现的。也许可以在表上添加一个MouseListener,然后您可以检查所选行是否不是预期的类型。那就意味着这是头球。我需要试试这个。。。