-
Notifications
You must be signed in to change notification settings - Fork 5
Menu Tutorial
Menu大致可以分为三类,一是窗口的菜单栏(SWT.BAR),二是右键上下文菜单(SWT.POP_UP),三是下拉菜单或子菜单(SWT.DROP_DOWN)。
下面是一段Menu的示例:
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Menu Tutorial");
shell.setSize(300, 200);
shell.setLayout(new FillLayout());
final Image image = new Image(display,
MenuTutorial.class.getResourceAsStream("task.gif"));
// MenuBar
Menu menuBar = new Menu(shell, SWT.BAR);
MenuItem fileItem = new MenuItem(menuBar, SWT.CASCADE);
fileItem.setText("File");
fileItem.setAccelerator('F');
fileItem.setImage(image);
// Drop_Down menu will be set as submenu for File menu.
Menu fileItemMenu = new Menu(shell, SWT.DROP_DOWN); // Menu fileItemMenu = new Menu(fileItem);
new MenuItem(fileItemMenu, SWT.PUSH).setText("Open...");
new MenuItem(fileItemMenu, SWT.PUSH).setText("Exit");
fileItem.setMenu(fileItemMenu);
shell.setMenuBar(menuBar);
Label label = new Label(shell, SWT.NONE);
label.setText("Popup Menu");
Menu contextMenu = new Menu(shell, SWT.POP_UP | SWT.NO_RADIO_GROUP);
MenuItem pushItem = new MenuItem(contextMenu, SWT.PUSH);
pushItem.setText("Push item");
pushItem.setImage(image);
new MenuItem(contextMenu, SWT.SEPARATOR);
MenuItem checkItem1 = new MenuItem(contextMenu, SWT.CHECK);
checkItem1.setText("Check item 1");
checkItem1.setImage(image);
checkItem1.setSelection(true);
MenuItem checkItem2 = new MenuItem(contextMenu, SWT.CHECK);
checkItem2.setText("Check item 2");
checkItem2.setImage(image);
new MenuItem(contextMenu, SWT.SEPARATOR);
MenuItem radioItem1 = new MenuItem(contextMenu, SWT.RADIO);
radioItem1.setText("Radio item 1");
radioItem1.setImage(image);
radioItem1.setSelection(true);
MenuItem radioItem2 = new MenuItem(contextMenu, SWT.RADIO);
radioItem2.setText("Radio item 2");
radioItem2.setImage(image);
radioItem2.setSelection(true);
label.setMenu(contextMenu);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
image.dispose();
display.dispose();
如图一是Shell的菜单栏:

如图二是右键上下文菜单:

-
只有Shell能添加MenuBar,并且Menu的style必须是SWT.BAR。Menu menuBar = new Menu(shell, SWT.BAR); shell.setMenuBar(menuBar); -
所有的Control都能添加ContextMenu,并且Menu的style必须是SWT.POP_UP。Menu contetxMenu = new Menu(control, SWT.POP_UP); control.setMenu(contextMenu); -
如果Menu设置了SWT.NO_RADIO_GROUP属性,则所有的SWT.RADIO菜单会各自为组,否则,所有的SWT.RADIO菜单同为一组,只有一个会被选中。
-
SWT.CASCADE:
能拥有子菜单,并且子菜单的style必须为SWT.DROP_DOWN。 -
SWT.PUSH:
普通菜单。 -
SWT.CHECK:
多选项菜单。 -
SWT.RADIO:
单选项菜单。 -
SWT.SEPARATOR:
分割线,也用来对MenuItem进行分组。 -
setText():
设置显示的文本,若文本中含有“&”符号,则“&”符号之后的第一个字母会被设为快捷键。menuItem.setText("&File");
相当于设置:
menuItem.setText("File"); menuItem.setAccelerator('F');
"File"菜单可用“Alt + F”快捷打开。
-
setAccelerator():设置快捷键。
参考资料:
上一篇:ExpandBar Tutorial 下一篇:Sash Tutorial
Soyatec Eclipse Plug-in and RCP Tutorials, wrote by Jin Liu (jin.liu@soyatec.com).
Eclipse Plug-in Development Tutorial
-
Standard Widget Toolkit Tutorial
-
Widgets Tutorial
- Label Tutorial
- Button Tutorial
- Text Tutorial
- Combo Tutorial
- List Tutorial
- Scale Tutorial
- Slider Tutorial
- Spinner Tutorial
- DateTime Tutorial
- Table Tutorial
- Tree Tutorial
- ToolBar Tutorial
- CoolBar Tutorial
- ProgressBar Tutorial
- ScrollBar Tutorial
- TaskBar Tutorial
- ExpandBar Tutorial
- Menu Tutorial
- Sash Tutorial
- ToolTip Tutorial
- Tray Tutorial
- Link Tutorial
- Browser Tutorial
- Dialog Tutorial
- Common Properties Tutorial
- Components Tutorial
- Shell Tutorial
- Display Tutorial
- SWT Custom Widgets Tutorial
- Drag and Drop Tutorial
- Layouts Tutorial
- Resource Management Tutorial
-
Widgets Tutorial
-
[JFace Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/JFace-Tutorial)
- [JFace Viewers Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/JFace-Viewers-Tutorial)
- [TableViewer Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/TableViewer-Tutorial)
- [TreeViewer Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/TreeViewer-Tutorial)
- [ListViewer Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/ListViewer-Tutorial)
- [ComboViewer Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/ComboViewer-Tutorial)
- [JFace Dialogs Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/JFace-Dialogs-Tutorial)
- [JFace DataBinding Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/JFace-DataBinding-Tutorial)
- [JFace Viewers Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/JFace-Viewers-Tutorial)
-
[Plug-in Development Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Plug-in-Development-Tutorial)
- [Views Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Views-Tutorial)
- [Editors Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Editors-Tutorial)
- [Action and Menus Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Action-and-Menus-Tutorial)
- [Preferences Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Preferences-Tutorial)
- [ExtensionPoint Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/ExtensionPoint-Tutorial)
- [Publish Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Publish-Tutorial)
- [Feature Project Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Feature-Project-Tutorial)
- [UpdateSite Project Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/UpdateSite-Project-Tutorial)
- [Fragment Project Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Fragment-Project-Tutorial)
-
[Eclipse 3.x RCP Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Eclipse-3.x-RCP-Tutorial)
- [Branding Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Branding-Tutorial)
- [Publish RCP Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/Publish-RCP-Tutorial)
-
[Graphical Editing Framework Tutorial] (https://github.com/ecsoya/eclipse.tutorial/wiki/GEF-Tutorial)