建立 MenuBar (頂層選單欄)
Menu menuBar = new Menu(shell, SWT.BAR); // 必須 SWT.BAR,parent 為 shell
shell.setMenuBar(menuBar);
加入頂層項目 (含下拉子選單)
MenuItem fileItem = new MenuItem(menuBar, SWT.CASCADE); // 必須 CASCADE 才能掛下拉
fileItem.setText("File");
Menu fileMenu = new Menu(shell, SWT.DROP_DOWN); // 子選單風格 DROP_DOWN
fileItem.setMenu(fileMenu);
在下拉選單加入可點擊項目
MenuItem actionItem = new MenuItem(fileMenu, SWT.PUSH);
actionItem.setText("Action");
actionItem.addListener(SWT.Selection, e -> System.out.println("Action Performed"));
MenuItem 風格詳解
| 風格 | 用途 | 備註 |
| PUSH | 一般命令按鈕 | 最常用 |
| CHECK | 核取方塊式 | 可切換選中狀態 |
| RADIO | 單選鈕式 | 同組互斥 |
| SEPARATOR | 分隔線 | 無文字/行為 |
| CASCADE | 含子選單 | 需再 setMenu(subMenu) |
多層級子選單 (CASCADE 遞歸)
MenuItem cascadeItem = new MenuItem(fileMenu, SWT.CASCADE);
cascadeItem.setText("Cascade");
Menu subMenu = new Menu(shell, SWT.DROP_DOWN);
cascadeItem.setMenu(subMenu);
MenuItem subAction = new MenuItem(subMenu, SWT.PUSH);
subAction.setText("&SubAction\tCtrl+S"); // & 標記助憶鍵 S
subAction.setAccelerator(SWT.CTRL + 'S'); // 真正快捷鍵
常用監聽器
- MenuListener:監聽選單顯示/隱藏 (
menuShown/menuHidden),作用於 Menu。
- ArmListener:滑鼠/鍵盤移入項目但未點選時觸發 (
widgetArmed)。
- HelpListener:按 F1/Help 鍵觸發 (
helpRequested)。