swt 的 菜单

Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());

//1. Create a bar menu
Menu barMenu = new Menu(shell, SWT.BAR);
//2. Set the bar menu as the main menu for the shell by calling setMenuBar(menu).
shell.setBarMenu(barMenu);
//3. 为 menu 添加按钮项目 0$1 是第0级第0个按钮 SWT.CASCADE 可以增加自按钮
//   这里MenuItem 的构造函数中的 menu 决定 menuItem挂在哪一个菜单下
//   LiIk 是第i级第k个按钮,level/index
MenuItem itemL0I0 = new MenuItem(barMenu, SWT.CASCADE);
itemL0I0.setText("itemL0I0");
MenuItem itemL0I1 = new MenuItem(barMenu, SWT.DOWN);
itemL0I1.setText("itemL0I1");
//4. Create each dropdown menu by calling either new Menu(shell, SWT.DROP_DOWN) or new Menu(barMenu).
//   创建按钮项目的按钮菜单,当然可以写成 menuL0I0 = new Menu(shell, SWT.DROP_DOWN)、
//   menuL0I0 = new Menu(barMenu),和下面的 menuL0I0 = new Menu(itemL0I1);
//   这里的 shell、barMenu、itemL0I1 只是为了让swt级联dispose时能够dispose menuL0I0 //   如果写成new Menu(shell, SWT.DROP_DOWN | SWT.NO_RADIO_GROUP),那么该menu中的radio就不再单选了 Menu menuL0I0 = new Menu(itemL0I1); //
//5. Set each dropdown into the appropriate bar menu item by calling MenuItem.setMenu(dropdownMenu).
//   关联itemL0I0的菜单为menuL0I0,第 4 步并不是在进行关联
itemL0I0.setMenu(menuL0I0);

//6. 重复 3 - 5,创建 menuL0I0 的子菜单
MenuItem itemL0I0_L1I0 = new MenuItem(menuL0I0, SWT.DOWN);
itemL0I0_L1I0.setText("itemL0I0_L1I0");
MenuItem itemL0I0_L1I1 = new MenuItem(menuL0I0, SWT.CASCADE);
itemL0I0_L1I1.setText("itemL0I0_L1I1");

Menu menuL0I0_L1I1 = new Menu(itemL0I0_L1I1);

itemL0I0_L1I1.setMenu(menuL0I0_L1I1);
/* 又一次重复步骤3 */
MenuItem itemL0I0_L1I1_L2I0 = new MenuItem(menuL0I0_L1I1, SWT.DOWN);
itemL0I0_L1I1_L2I0.setText("itemL0I0_L1I1_L2I0");
MenuItem itemL0I0_L1I1_L2I1 = new MenuItem(menuL0I0_L1I1, SWT.DOWN);
itemL0I0_L1I1_L2I1.setText("itemL0I0_L1I1_L2I1");
MenuItem itemL0I0_L1I1_L2I2 = new MenuItem(menuL0I0_L1I1, SWT.DOWN);
itemL0I0_L1I1_L2I2.setText("itemL0I0_L1I1_L2I2");  
new MenuItem(menuL0I0_L1I1, SWT.SEPARATOR);   MenuItem itemL0I0_L1I1_L2I4 = new MenuItem(menuL0I0_L1I1, SWT.RADIO);
itemL0I0_L1I1_L2I4.setText("itemL0I0_L1I1_L2I4");
MenuItem itemL0I0_L1I1_L2I5 = new MenuItem(menuL0I0_L1I1, SWT.RADIO);
itemL0I0_L1I1_L2I5.setText("itemL0I0_L1I1_L2I5");
itemL0I0_L1I1_L2I5.setSelection(true);
new MenuItem(menuL0I0_L1I1, SWT.SEPARATOR);
  MenuItem itemL0I0_L1I1_L2I6 =  new MenuItem(menuL0I0_L1I1, SWT.RADIO);
itemL0I0_L1I1_L2I6.setText("itemL0I0_L1I1_L2I6");
// itemL0I0_L1I1_L2I5 和 itemL0I0_L1I1_L2I6 与
// itemL0I0_L1I1_L2I7 和 itemL0I0_L1I1_L2I8 不是一个group的,可以同时选择 itemL0I0_L1I1_L2I6.setSelection(true);
MenuItem itemL0I0_L1I1_L2I7 = new MenuItem(menuL0I0_L1I1, SWT.RADIO);
itemL0I0_L1I1_L2I7.setText("itemL0I0_L1I1_L2I7");



shell.pack();
shell.open();

while(!shell.isDisposed() ) {
    if(!display.readAndDispatch() ) {
        display.sleep();
    }
}

display.close();
 
 
这里显示的按钮栏,如果要改写为弹出菜单的话,只需要不设置为 SWT.BAR 即可,
把 1 修改为:
    Label label = new Label(shell, SWT.CENTER);
    label.setText("label");
    Menu barMenu = new Menu(label);
把2修改为:
    label.setMenu(barMenu);
 
这也在 label 上右键的时候就有弹出菜单了
 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值