看看下面的代码片段。诀窍是定义第Menu
一个,然后仅将其设置为那些Control
应该允许菜单检测的 s:
public class StackOverflow
{
public static void main(String[] args)
{
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new GridLayout(2, true));
Composite c1 = new Composite(shell, SWT.BORDER);
c1.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
Composite c2 = new Composite(shell, SWT.BORDER);
c2.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
Menu menu = new Menu(shell, SWT.POP_UP);
MenuItem item = new MenuItem(menu, SWT.PUSH);
item.setText("Popup");
new Label(shell, SWT.BORDER).setText("No menu here");
new Label(shell, SWT.BORDER).setText("No menu here");
// Add menu only to c1 and c2, not to the shell and not to the labels
c1.setMenu(menu);
c2.setMenu(menu);
shell.setSize(300, 300);
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
这是一个屏幕截图: