【发布时间】:2014-10-30 18:17:17
【问题描述】:
如何区分 swt 中弹出菜单的右键单击和左键单击?
通过添加一个 SelectionListener 我可以对左键和右键单击进行操作,但是如何 我知道用的是哪一个吗?是否可以在 MenuItem 上有一个 MouseListener?
我想做的类似于浏览器收藏夹菜单,左键选择 并右键单击最喜欢的上下文菜单。
Button bn = new Button(shell, SWT.FLAT);
bn.setText("Right Click to see the popup menu");
Menu popupMenu = new Menu(bn);
MenuItem newItem = new MenuItem(popupMenu, SWT.CASCADE);
newItem.setText("New");
newItem.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
System.out.print("SELECTED1\n" );
}
public void widgetDefaultSelected(SelectionEvent e) {
System.out.print("SELECTED2\n" );
}
});
澄清: 抱歉,没有设法包含屏幕截图,但如果您按照此说明进行操作,我想您会明白我的意思。
- 在 Windows 资源管理器(或任何其他浏览器)中选择“收藏夹”菜单
- 如果您左键单击收藏夹之一,浏览器将打开此 URL, 但您也可以右键单击此收藏夹。
- 右键单击会弹出一个对所选收藏有效的上下文菜单。
我还需要对同一个 MenuItem 进行两个不同的操作(实际上与浏览器的目的相同)。
【问题讨论】:
-
好的,但是选择(左键单击)和上下文菜单(右键单击)已包含在我的答案中...
-
在按钮上是的,但我没有设法在 MenuItem 上做到这一点。事实上,我怀疑操作系统只有菜单的“选定”事件,据我所知,这个事件没有携带有关使用哪个按钮的信息。它在浏览器中很可能是一个看起来像菜单的小部件。当然我也可以这样做,但是如果可以使用 Menu 会节省很多工作。
-
好的,经过一些测试,我很确定在
MenuItem上单击左键和右键是不可能区分的。 -
我担心是这种情况,但感谢您的尝试。
标签: java swt menuitem selected right-click