|
|
We begin by creating the File menu and setting its text this wayas in other GUI support packages, the "&" before the "F" in File sets the shortcut for this menu (allowing you, for example, to
menuBar = new Menu(shell, SWT.BAR);
fileMenuHeader = new MenuItem(menuBar, SWT.CASCADE);
fileMenuHeader.setText("&File");
That adds the File menu item to the menu bar. The
menuBar = new Menu(shell, SWT.BAR);
fileMenuHeader = new MenuItem(menuBar, SWT.CASCADE);
fileMenuHeader.setText("&File");
fileMenu = new Menu(shell, SWT.DROP_DOWN);
fileMenuHeader.setMenu(fileMenu);
In this example, we're going to give the File menu two items, Save and Exit, and we only have to create two new MenuItem objects to do that:
menuBar = new Menu(shell, SWT.BAR);
fileMenuHeader = new MenuItem(menuBar, SWT.CASCADE);
fileMenuHeader.setText("&File");
fileMenu = new Menu(shell, SWT.DROP_DOWN);
fileMenuHeader.setMenu(fileMenu);
fileSaveItem = new MenuItem(fileMenu, SWT.PUSH);
fileSaveItem.setText("&Save");
fileExitItem = new MenuItem(fileMenu, SWT.PUSH);
fileExitItem.setText("E&xit");
The File
fileSaveItem.addSelectionListener(new fileSaveItemListener( )); fileExitItem.addSelectionListener(new fileExitItemListener( ));
When the File
class fileSaveItemListener implements SelectionListener
{
public void widgetSelected(SelectionEvent event)
{
label.setText("Saved");
}
public void widgetDefaultSelected(SelectionEvent event)
{
label.setText("Saved");
}
}
On the other hand, when the
class fileExitItemListener implements SelectionListener
{
public void widgetSelected(SelectionEvent event)
{
shell.close( );
display.dispose( );
}
public void widgetDefaultSelected(SelectionEvent event)
{
shell.close( );
display.dispose( );
}
}
When you've got the menu system configured as you want it, you add the menuBar object to the current shell with the setMenuBar method, and display the shell as usual:
shell.setMenuBar(menuBar);
shell.open( );
while(!shell.isDisposed( )) {
if(!display.readAndDispatch( )) display.sleep( );
}
display.dispose( );
That's all it takes for the File menu. In this example, we also want to add the Help
Example 8-1. Using SWT menus
package org.eclipsebook.ch08;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
public class Ch08_01 {
Display display;
Shell shell;
Menu menuBar, fileMenu, helpMenu;
MenuItem fileMenuHeader, helpMenuHeader;
MenuItem fileExitItem, fileSaveItem, helpGetHelpItem;
Label label;
public Ch08_01( ){
display = new Display( );
shell = new Shell(display);
shell.setText("Menu Example");
shell.setSize(300, 200);
label = new Label(shell, SWT.CENTER);
label.setBounds(shell.getClientArea( ));
menuBar = new Menu(shell, SWT.BAR);
fileMenuHeader = new MenuItem(menuBar, SWT.CASCADE);
fileMenuHeader.setText("&File");
fileMenu = new Menu(shell, SWT.DROP_DOWN);
fileMenuHeader.setMenu(fileMenu);
fileSaveItem = new MenuItem(fileMenu, SWT.PUSH);
fileSaveItem.setText("&Save");
fileExitItem = new MenuItem(fileMenu, SWT.PUSH);
fileExitItem.setText("E&xit");
helpMenuHeader = new MenuItem(menuBar, SWT.CASCADE);
helpMenuHeader.setText("&Help");
helpMenu = new Menu(shell, SWT.DROP_DOWN);
helpMenuHeader.setMenu(helpMenu);
helpGetHelpItem = new MenuItem(helpMenu, SWT.PUSH);
helpGetHelpItem.setText("&Get Help");
fileExitItem.addSelectionListener(new fileExitItemListener( ));
fileSaveItem.addSelectionListener(new fileSaveItemListener( ));
helpGetHelpItem.addSelectionListener(new helpGetHelpItemListener( ));
shell.setMenuBar(menuBar);
shell.open( );
while(!shell.isDisposed( )) {
if(!display.readAndDispatch( )) display.sleep( );
}
display.dispose( );
}
class fileExitItemListener implements SelectionListener
{
public void widgetSelected(SelectionEvent event)
{
shell.close( );
display.dispose( );
}
public void widgetDefaultSelected(SelectionEvent event)
{
shell.close( );
display.dispose( );
}
}
class fileSaveItemListener implements SelectionListener
{
public void widgetSelected(SelectionEvent event)
{
label.setText("Saved");
}
public void widgetDefaultSelected(SelectionEvent event)
{
label.setText("Saved");
}
}
class helpGetHelpItemListener implements SelectionListener
{
public void widgetSelected(SelectionEvent event)
{
label.setText("No worries!");
}
public void widgetDefaultSelected(SelectionEvent event)
{
label.setText("No worries!");
}
}
public static void main(String [] args) {
Ch08_01 menuExample = new Ch08_01( );
}
}
You can see the results in Figure 8-1 and Figure 8-2; when the user selects the File
Figure 8-1. Selecting an SWT menu item
Figure 8-2. The results of selecting a menu item
|