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

标签 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,而不仅仅是标题行。 因为对于其他行,我需要使用不同的菜单。 我试图找到一种仅将操作添加到顶行(标题行)的方法,但到目前为止没有成功。

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

最佳答案

您将一个 MouseListener 添加到表中,并检查以下内容:

  1. 点击的按钮是鼠标右键。
  2. 事件的指针位于表格项的范围内(即您的第一个 TableItem - 您将使用 table.getItem(Point))。<

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

关于java - 尝试将菜单添加到 TableViewer 的标题行(标题行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20974723/

相关文章:

java - ScrolledPageBook 的替代品?

java - 如何更改 JFace 向导对话框中的“后退”和“下一步”按钮位置?

java - JSON请求修改

java - 无法找出正确的参数来模仿 Java 中的网站表单

java - Jsoup:提取 2 个随机标签之间的所有内容

java - 如何获得自定义 Eclipse 产品的 Java 视角

java - 如何过滤可编辑组合框或组合查看器中的值

java - 存储库 Spring-Data-Cassandra 的自定义实现

java - JFace 向导的默认大小是多少?怎么知道呢?

java - 禁用 Jface 菜单管理器(灰显)