- GUI
- Windows API tutorial
- Introduction to Windows API
- Windows API main functions
- System functions in Windows API
- Strings in Windows API
- Date & time in Windows API
- A window in Windows API
- First steps in UI
- Windows API menus
- Windows API dialogs
- Windows API controls I
- Windows API controls II
- Windows API controls III
- Advanced controls in Windows API
- Custom controls in Windows API
- The GDI in Windows API
- PyQt4 tutorial
- PyQt5 tutorial
- Qt4 tutorial
- Introduction to Qt4 toolkit
- Qt4 utility classes
- Strings in Qt4
- Date and time in Qt4
- Working with files and directories in Qt4
- First programs in Qt4
- Menus and toolbars in Qt4
- Layout management in Qt4
- Events and signals in Qt4
- Qt4 Widgets
- Qt4 Widgets II
- Painting in Qt4
- Custom widget in Qt4
- The Breakout game in Qt4
- Qt5 tutorial
- Introduction to Qt5 toolkit
- Strings in Qt5
- Date and time in Qt5
- Containers in Qt5
- Working with files and directories in Qt5
- First programs in Qt5
- Menus and toolbars in Qt5
- Layout management in Qt5
- Events and signals in Qt5
- Qt5 Widgets
- Qt5 Widgets II
- Painting in Qt5
- Custom widget in Qt5
- Snake in Qt5
- The Breakout game in Qt5
- PySide tutorial
- Tkinter tutorial
- Tcl/Tk tutorial
- Qt Quick tutorial
- Java Swing tutorial
- JavaFX tutorial
- Java SWT tutorial
- wxWidgets tutorial
- Introduction to wxWidgets
- wxWidgets helper classes
- First programs in wxWidgets
- Menus and toolbars in wxWidgets
- Layout management in wxWidgets
- Events in wxWidgets
- Dialogs in wxWidgets
- wxWidgets widgets
- wxWidgets widgets II
- Drag and Drop in wxWidgets
- Device Contexts in wxWidgets
- Custom widgets in wxWidgets
- The Tetris game in wxWidgets
- wxPython tutorial
- Introduction to wxPython
- First Steps
- Menus and toolbars
- Layout management in wxPython
- Events in wxPython
- wxPython dialogs
- Widgets
- Advanced widgets in wxPython
- Drag and drop in wxPython
- Internationalisation
- Application skeletons in wxPython
- The GDI
- Mapping modes
- Creating custom widgets
- Tips and Tricks
- wxPython Gripts
- The Tetris game in wxPython
- C# Winforms Mono tutorial
- Java Gnome tutorial
- Introduction to Java Gnome
- First steps in Java Gnome
- Layout management in Java Gnome
- Layout management II in Java Gnome
- Menus in Java Gnome
- Toolbars in Java Gnome
- Events in Java Gnome
- Widgets in Java Gnome
- Widgets II in Java Gnome
- Advanced widgets in Java Gnome
- Dialogs in Java Gnome
- Pango in Java Gnome
- Drawing with Cairo in Java Gnome
- Drawing with Cairo II
- Nibbles in Java Gnome
- QtJambi tutorial
- GTK+ tutorial
- Ruby GTK tutorial
- GTK# tutorial
- Visual Basic GTK# tutorial
- PyGTK tutorial
- Introduction to PyGTK
- First steps in PyGTK
- Layout management in PyGTK
- Menus in PyGTK
- Toolbars in PyGTK
- Signals & events in PyGTK
- Widgets in PyGTK
- Widgets II in PyGTK
- Advanced widgets in PyGTK
- Dialogs in PyGTK
- Pango
- Pango II
- Drawing with Cairo in PyGTK
- Drawing with Cairo II
- Snake game in PyGTK
- Custom widget in PyGTK
- PHP GTK tutorial
- C# Qyoto tutorial
- Ruby Qt tutorial
- Visual Basic Qyoto tutorial
- Mono IronPython Winforms tutorial
- Introduction
- First steps in IronPython Mono Winforms
- Layout management
- Menus and toolbars
- Basic Controls in Mono Winforms
- Basic Controls II in Mono Winforms
- Advanced Controls in Mono Winforms
- Dialogs
- Drag & drop in Mono Winforms
- Painting
- Painting II in IronPython Mono Winforms
- Snake in IronPython Mono Winforms
- The Tetris game in IronPython Mono Winforms
- FreeBASIC GTK tutorial
- Jython Swing tutorial
- JRuby Swing tutorial
- Visual Basic Winforms tutorial
- JavaScript GTK tutorial
- Ruby HTTPClient tutorial
- Ruby Faraday tutorial
- Ruby Net::HTTP tutorial
- Java 2D games tutorial
- Java 2D tutorial
- Cairo graphics tutorial
- PyCairo tutorial
- HTML5 canvas tutorial
- Python tutorial
- Python language
- Interactive Python
- Python lexical structure
- Python data types
- Strings in Python
- Python lists
- Python dictionaries
- Python operators
- Keywords in Python
- Functions in Python
- Files in Python
- Object-oriented programming in Python
- Modules
- Packages in Python
- Exceptions in Python
- Iterators and Generators
- Introspection in Python
- Ruby tutorial
- PHP tutorial
- Visual Basic tutorial
- Visual Basic
- Visual Basic lexical structure
- Basics
- Visual Basic data types
- Strings in Visual Basic
- Operators
- Flow control
- Visual Basic arrays
- Procedures & functions in Visual Basic
- Organizing code in Visual Basic
- Object-oriented programming
- Object-oriented programming II in Visual Basic
- Collections in Visual Basic
- Input & output
- Tcl tutorial
- C# tutorial
- Java tutorial
- AWK tutorial
- Jetty tutorial
- Tomcat Derby tutorial
- Jtwig tutorial
- Android tutorial
- Introduction to Android development
- First Android application
- Android Button widgets
- Android Intents
- Layout management in Android
- Android Spinner widget
- SeekBar widget
- Android ProgressBar widget
- Android ListView widget
- Android Pickers
- Android menus
- Dialogs
- Drawing in Android
- Java EE 5 tutorials
- Introduction
- Installing Java
- Installing NetBeans 6
- Java Application Servers
- Resin CGIServlet
- JavaServer Pages, (JSPs)
- Implicit objects in JSPs
- Shopping cart
- JSP & MySQL Database
- Java Servlets
- Sending email in a Servlet
- Creating a captcha in a Servlet
- DataSource & DriverManager
- Java Beans
- Custom JSP tags
- Object relational mapping with iBATIS
- Jsoup tutorial
- MySQL tutorial
- MySQL quick tutorial
- MySQL storage engines
- MySQL data types
- Creating, altering and dropping tables in MySQL
- MySQL expressions
- Inserting, updating, and deleting data in MySQL
- The SELECT statement in MySQL
- MySQL subqueries
- MySQL constraints
- Exporting and importing data in MySQL
- Joining tables in MySQL
- MySQL functions
- Views in MySQL
- Transactions in MySQL
- MySQL stored routines
- MySQL Python tutorial
- MySQL Perl tutorial
- MySQL C API programming tutorial
- MySQL Visual Basic tutorial
- MySQL PHP tutorial
- MySQL Java tutorial
- MySQL Ruby tutorial
- MySQL C# tutorial
- SQLite tutorial
- SQLite C tutorial
- SQLite PHP tutorial
- SQLite Python tutorial
- SQLite Perl tutorial
- SQLite Ruby tutorial
- SQLite C# tutorial
- SQLite Visual Basic tutorial
- PostgreSQL C tutorial
- PostgreSQL Python tutorial
- PostgreSQL Ruby tutorial
- PostgreSQL PHP tutorial
- PostgreSQL Java tutorial
- Apache Derby tutorial
- SQLAlchemy tutorial
- MongoDB PHP tutorial
- MongoDB Java tutorial
- MongoDB JavaScript tutorial
- MongoDB Ruby tutorial
- Spring JdbcTemplate tutorial
- JDBI tutorial
Menus & toolbars in Java SWT
In this part of the Java SWT tutorial, we work with menus & toolbars.
A menubar is a common part of a GUI application. It is a group of commands located in various menus.
Simple menu
In our first example, we create a menubar with one file menu. The menu has only one menu item. By selecting the item the application ends.
SimpleMenuEx.java
package com.zetcode; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; /** * ZetCode Java SWT tutorial * * This program creates a simple menu. * * Author: Jan Bodnar * Website: zetcode.com * Last modified: June 2015 */ public class SimpleMenuEx { public SimpleMenuEx(Display display) { initUI(display); } private void initUI(Display display) { Shell shell = new Shell(display, SWT.SHELL_TRIM | SWT.CENTER); Menu menuBar = new Menu(shell, SWT.BAR); MenuItem cascadeFileMenu = new MenuItem(menuBar, SWT.CASCADE); cascadeFileMenu.setText("&File"); Menu fileMenu = new Menu(shell, SWT.DROP_DOWN); cascadeFileMenu.setMenu(fileMenu); MenuItem exitItem = new MenuItem(fileMenu, SWT.PUSH); exitItem.setText("&Exit"); shell.setMenuBar(menuBar); exitItem.addListener(SWT.Selection, event-> { shell.getDisplay().dispose(); System.exit(0); }); shell.setText("Simple menu"); shell.setSize(300, 200); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } } @SuppressWarnings("unused") public static void main(String[] args) { Display display = new Display(); SimpleMenuEx ex = new SimpleMenuEx(display); display.dispose(); } }
This is a small example with minimal menubar functionality.
Menu menuBar = new Menu(shell, SWT.BAR);
Passing the SWT.BAR
option to the Menu
creates a menu bar.
MenuItem cascadeFileMenu = new MenuItem(menuBar, SWT.CASCADE); cascadeFileMenu.setText("&File");
Top-level menu items are cascade menu items; they receive the SWT.CASCADE
option.
Menu fileMenu = new Menu(shell, SWT.DROP_DOWN); cascadeFileMenu.setMenu(fileMenu);
Drop down menus are created with the SWT.DROP_DOWN
option.
MenuItem exitItem = new MenuItem(fileMenu, SWT.PUSH); exitItem.setText("&Exit");
A push menu item is plugged into a drop down menu. It is created with the SWT.PUSH
option.
shell.setMenuBar(menuBar);
The setMenuBar()
sets a menu bar to the shell.
exitItem.addListener(SWT.Selection, event-> { shell.getDisplay().dispose(); System.exit(0); });
When we select the exit push menu item, the application is terminated.

Submenu
The next example demonstrates how to create a submenu.
SubMenuEx.java
package com.zetcode; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; /** * ZetCode Java SWT tutorial * * This program creates a submenu. * * Author: Jan Bodnar * Website: zetcode.com * Last modified: June 2015 */ public class SubMenuEx { public SubMenuEx(Display display) { initUI(display); } private void initUI(Display display) { Shell shell = new Shell(display, SWT.SHELL_TRIM | SWT.CENTER); Menu menuBar = new Menu(shell, SWT.BAR); MenuItem cascadeFileMenu = new MenuItem(menuBar, SWT.CASCADE); cascadeFileMenu.setText("&File"); Menu fileMenu = new Menu(shell, SWT.DROP_DOWN); cascadeFileMenu.setMenu(fileMenu); MenuItem cascadeEditMenu = new MenuItem(menuBar, SWT.CASCADE); cascadeEditMenu.setText("&Edit"); MenuItem subMenuItem = new MenuItem(fileMenu, SWT.CASCADE); subMenuItem.setText("Import"); Menu submenu = new Menu(shell, SWT.DROP_DOWN); subMenuItem.setMenu(submenu); MenuItem feedItem = new MenuItem(submenu, SWT.PUSH); feedItem.setText("&Import news feed..."); MenuItem bmarks = new MenuItem(submenu, SWT.PUSH); bmarks.setText("&Import bookmarks..."); MenuItem mailItem = new MenuItem(submenu, SWT.PUSH); mailItem.setText("&Import mail..."); MenuItem exitItem = new MenuItem(fileMenu, SWT.PUSH); exitItem.setText("&Exit"); shell.setMenuBar(menuBar); exitItem.addListener(SWT.Selection, event-> { shell.getDisplay().dispose(); System.exit(0); }); shell.setText("Submenu"); shell.setSize(300, 250); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } } @SuppressWarnings("unused") public static void main(String[] args) { Display display = new Display(); SubMenuEx ex = new SubMenuEx(display); display.dispose(); } }
The example creates a menu inside another menu.
MenuItem subMenuItem = new MenuItem(fileMenu, SWT.CASCADE); subMenuItem.setText("Import");
A submenu creation is similar to creating a normal menu. First, we create a cascade menu item. The only difference is the parent widget. This time the parent is the menu object, to which the submenu belongs.
MenuItem feedItem = new MenuItem(submenu, SWT.PUSH); feedItem.setText("&Import news feed...");
We create a push menu item. The parent widget is the submenu object.

CheckMenuItem
CheckMenuItem
is a menu item with a check box. It can be used to work with boolean properties.
CheckMenuItemEx.java
package com.zetcode; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; /** * ZetCode Java SWT tutorial * * This program creates a check menu item. * It will show or hide a statusbar. * * Author: Jan Bodnar * Website: zetcode.com * Last modified: June 2015 */ public class CheckMenuItemEx { private Shell shell; private Label status; private MenuItem statItem; public CheckMenuItemEx(Display display) { initUI(display); } public void initUI(Display display) { shell = new Shell(display, SWT.SHELL_TRIM | SWT.CENTER); Menu menuBar = new Menu(shell, SWT.BAR); shell.setMenuBar(menuBar); MenuItem cascadeFileMenu = new MenuItem(menuBar, SWT.CASCADE); cascadeFileMenu.setText("&File"); Menu fileMenu = new Menu(shell, SWT.DROP_DOWN); cascadeFileMenu.setMenu(fileMenu); MenuItem exitItem = new MenuItem(fileMenu, SWT.PUSH); exitItem.setText("&Exit"); MenuItem cascadeViewMenu = new MenuItem(menuBar, SWT.CASCADE); cascadeViewMenu.setText("&View"); Menu viewMenu = new Menu(shell, SWT.DROP_DOWN); cascadeViewMenu.setMenu(viewMenu); statItem = new MenuItem(viewMenu, SWT.CHECK); statItem.setSelection(true); statItem.setText("&View Statusbar"); statItem.addListener(SWT.Selection, new MyStatusListener()); exitItem.addSelectionListener(new MySelectionAdapter()); status = new Label(shell, SWT.BORDER); status.setText("Ready"); FormLayout layout = new FormLayout(); shell.setLayout(layout); FormData labelData = new FormData(); labelData.left = new FormAttachment(0); labelData.right = new FormAttachment(100); labelData.bottom = new FormAttachment(100); status.setLayoutData(labelData); shell.setText("Check menu item"); shell.setSize(300, 250); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } } private class MyStatusListener implements Listener { @Override public void handleEvent(Event event) { if (statItem.getSelection()) { status.setVisible(true); } else { status.setVisible(false); } } } private class MySelectionAdapter extends SelectionAdapter { @Override public void widgetSelected(SelectionEvent e) { shell.getDisplay().dispose(); System.exit(0); } } @SuppressWarnings("unused") public static void main(String[] args) { Display display = new Display(); CheckMenuItemEx ex = new CheckMenuItemEx(display); display.dispose(); } }
In our code example we show a check menu item. If the check box is activated, the statusbar is shown. If not, the statusbar is hidden.
statItem = new MenuItem(viewMenu, SWT.CHECK);
The SWT.CHECK
flag will create a check menu item.
statItem.setSelection(true);
The setSelection()
method checks or unchecks the check menu item.
if (statItem.getSelection()) { status.setVisible(true); } else { status.setVisible(false); }
Depending on the state of the check menu item, we show or hide the label widget.

Popup menu
In the next example, we create a popup menu. Popup menu is also called a context menu. This type of menu is shown when we right click on an object.
PopupMenuEx.java
package com.zetcode; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; /** * ZetCode Java SWT tutorial * * This program creates a popup menu. * * Author: Jan Bodnar * Website: zetcode.com * Last modified: June 2015 */ public class PopupMenuEx { public PopupMenuEx(Display display) { initUI(display); } private void initUI(Display display) { Shell shell = new Shell(display, SWT.SHELL_TRIM | SWT.CENTER); Menu menu = new Menu(shell, SWT.POP_UP); MenuItem minItem = new MenuItem(menu, SWT.PUSH); minItem.setText("Minimize"); minItem.addListener(SWT.Selection, event -> { shell.setMinimized(true); }); MenuItem exitItem = new MenuItem(menu, SWT.PUSH); exitItem.setText("Exit"); exitItem.addListener(SWT.Selection, event -> { shell.getDisplay().dispose(); System.exit(0); }); shell.setText("Popup menu"); shell.setMenu(menu); shell.setSize(300, 250); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } } @SuppressWarnings("unused") public static void main(String[] args) { Display display = new Display(); PopupMenuEx ex = new PopupMenuEx(display); display.dispose(); } }
In our code example, we create a popup menu with two menu items. The first minimizes the window, and the second terminates the application.
Menu menu = new Menu(shell, SWT.POP_UP);
Popup menu is created with the SWT.POP_UP
flag.
MenuItem minItem = new MenuItem(menu, SWT.PUSH); minItem.setText("Minimize");
Menu items inside a popup menu are normal push menu items.
minItem.addListener(SWT.Selection, event -> { shell.setMinimized(true); });
The setMinimized()
method minimizes the window.
shell.setMenu(menu);
We set a popup menu for the shell.

Simple toolbar
Menus group commands that we can use in application. Toolbars provide a quick access to the most frequently used commands. In the following example, we create a simple toolbar.
SimpleToolBarEx.java
package com.zetcode; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Device; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; /** * ZetCode Java SWT tutorial * * This program creates a simple toolbar. * * Author: Jan Bodnar * Website: zetcode.com * Last modified: June 2015 */ public class SimpleToolBarEx { private Image newi; private Image opei; private Image quii; public SimpleToolBarEx(Display display) { initUI(display); } @SuppressWarnings("unused") public void initUI(Display display) { Shell shell = new Shell(display, SWT.SHELL_TRIM | SWT.CENTER); Device dev = shell.getDisplay(); try { newi = new Image(dev, "new.png"); opei = new Image(dev, "open.png"); quii = new Image(dev, "quit.png"); } catch (Exception e) { System.out.println("Cannot load images"); System.out.println(e.getMessage()); System.exit(1); } ToolBar toolBar = new ToolBar(shell, SWT.BORDER); ToolItem item1 = new ToolItem(toolBar, SWT.PUSH); item1.setImage(newi); ToolItem item2 = new ToolItem(toolBar, SWT.PUSH); item2.setImage(opei); ToolItem separator = new ToolItem(toolBar, SWT.SEPARATOR); ToolItem item3 = new ToolItem(toolBar, SWT.PUSH); item3.setImage(quii); toolBar.pack(); item3.addListener(SWT.Selection, event -> { shell.getDisplay().dispose(); System.exit(0); }); shell.setText("Simple toolbar"); shell.setSize(300, 250); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } } @Override public void finalize() { newi.dispose(); opei.dispose(); quii.dispose(); } public static void main(String[] args) { Display display = new Display(); SimpleToolBarEx ex = new SimpleToolBarEx(display); ex.finalize(); display.dispose(); } }
The example shows a toolbar and three tool items.
ToolBar toolBar = new ToolBar(shell, SWT.BORDER);
A toolbar is created.
ToolItem item1 = new ToolItem(toolBar, SWT.PUSH); item1.setImage(newi);
We create a tool item with an image.
ToolItem separator = new ToolItem(toolBar, SWT.SEPARATOR);
Here we create a vertical separator.

In this chapter of the Java SWT tutorial, we showed how to work with menus & toolbars.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论