如何在swt中区分右键单击和左键单击弹出菜单?
通过添加SelectionListener,我可以在左键和右键上进行操作,但我如何知道使用了哪一个呢?有可能在菜单上安装鼠标听筒吗?
我想做的类似于浏览器的收藏夹菜单,左键单击选择,右键单击选择收藏夹关联菜单。
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" );
}
});
澄清一下:抱歉,没有包含屏幕截图,但是我想你可以明白我的意思,如果你遵循这个描述。
对于同一个菜单项,我还需要两个不同的操作(实际上是为了与浏览器相同的目的)。
您可以在左键侦听SWT。选择
,右键侦听SWT。MenuDetect
:
public static void main(String[] args)
{
Display display = new Display();
Shell shell = new Shell();
shell.setText("StackOverflow");
shell.setLayout(new FillLayout());
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");
bn.addListener(SWT.Selection, new Listener()
{
@Override
public void handleEvent(Event e)
{
System.out.println("click");
}
});
bn.addListener(SWT.MenuDetect, new Listener()
{
@Override
public void handleEvent(Event e)
{
System.out.println("menu");
}
});
bn.setMenu(popupMenu);
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
display.dispose();
}
也就是说,对于菜单,你不需要SWT。菜单检测监听器。只要调用
按钮#设置菜单(Menu)
就可以了。
问题内容: 我试图区分OnClick函数中的左键单击和右键单击。但, 证明e 。对于合成事件未定义。如何在此处区分左键和右键? 问题答案: 您也可以这样做。同时拥有onClick和onContextMenu处理程序 您可以根据其他答案的建议进行检查,也可以进行检查。(此外,如果右键单击,请阻止默认设置。) 使用 使用 这是一个演示 http://jsbin.com/seyeliv/edit?htm
我在我的项目中实现了一个SWT浏览器来显示HTML页面。当用户右键点击该浏览器时,它会显示一个弹出菜单,具有“打印”、“打印视图”等功能。如果我把按钮放在工具栏上,可以用单独的按钮来完成吗? 浏览器控件的另一个功能是使用“Ctrl F”,这会带来一个查找对话框。这个对话可以用按钮来调用吗? 请帮帮我?
从pygame的api来看,它有: 但是没有办法区分右点击和左点击?
问题内容: 我在论坛上搜索并看到以下代码: 但是代码运行不正确(有时会打印出“并且单击一次!” 2次。应该打印出“并且双击!”)。有人可以告诉我为什么吗?还是可以给我一些更好的方法呢?谢谢! 问题答案: 有时它会打印出“并且只需单击一次!” 2次 。它应该打印出“,这是双击!”)。 那是正常的。仅当您在指定的时间间隔内单击两次时,才会发生双击。因此,有时如果单击速度不够快,您将连续获得两次单击。
问题内容: 我有一个id为id的按钮。我将此元素附加了两个jQuery事件 1。 2。 但是每次它给我 问题答案: 您需要使用超时来检查第一次点击后是否还有另一次点击。 这是窍门: 用法:
问题内容: 如何在SWT树中的树项上添加右键单击弹出菜单。每个树项目都应在其上启用右键 问题答案: 只需使用。 你去了: