Java 正在尝试将菜单添加到TableViewer';s标题行(标题行)
我正在尝试将操作添加到TableViewer标题(标题)的菜单中 这是我现在使用的代码: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
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,然后您可以检查所选行是否不是预期的类型。那就意味着这是头球。我需要试试这个。。。