![]() |
< Day Day Up > |
![]() |
Recipe 9.8 Creating Text Menu Items9.8.1 ProblemYou want to add menu items that display text captions to a menu and handle selection events for those items. 9.8.2 SolutionUse the MenuItem class and the SelectionAdapter class. Create a MenuItem object, use the addSelectionListener method to add a listener to it, and use the setText method to set the text caption in the menu item. 9.8.3 DiscussionTo implement a File public MenuClass( ) . . . 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"); . . . To make this menu item active, connect it to a selection listener class we'll name MenuListener: fileSaveItem.addSelectionListener(new MenuItemListener( )); The MenuListener class will extend the
SelectionAdapter class. As mentioned in Chapter 8, all SWT listener interfaces have adapter
classes with stub implementations of all the
interface's methods; if you extend an adapter class,
you have to implement only the methods you want to override. In this
case, we'll display the text of the selected item by
retrieving the menu item widget that caused the event; note that if
the selected item was File class MenuItemListener extends SelectionAdapter { public void widgetSelected(SelectionEvent event) { if(((MenuItem) event.widget).getText( ).equals("E&xit")){ shell.close( ); } text.setText("You selected " + ((MenuItem) event.widget).getText( )); } } That completes the File Example 9-3. SWT menuspackage org.cookbook.ch09; import org.eclipse.swt.widgets.*; import org.eclipse.swt.SWT; import org.eclipse.swt.events.*; public class MenuClass { Display display; Shell shell; Menu menuBar, fileMenu, editMenu; MenuItem fileMenuHeader, editMenuHeader; MenuItem fileExitItem, fileSaveItem, editCopyItem; Text text; public MenuClass( ) { display = new Display( ); shell = new Shell(display); shell.setText("Menu Example"); shell.setSize(300, 200); text = new Text(shell, SWT.BORDER); text.setBounds(80, 50, 150, 25); 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"); editMenuHeader = new MenuItem(menuBar, SWT.CASCADE); editMenuHeader.setText("&Edit"); editMenu = new Menu(shell, SWT.DROP_DOWN); editMenuHeader.setMenu(editMenu); editCopyItem = new MenuItem(editMenu, SWT.PUSH); editCopyItem.setText("&Copy"); fileExitItem.addSelectionListener(new MenuItemListener( )); fileSaveItem.addSelectionListener(new MenuItemListener( )); editCopyItem.addSelectionListener(new MenuItemListener( )); shell.setMenuBar(menuBar); shell.open( ); while (!shell.isDisposed( )) { if (!display.readAndDispatch( )) display.sleep( ); } display.dispose( ); } class MenuItemListener extends SelectionAdapter { public void widgetSelected(SelectionEvent event) { if(((MenuItem) event.widget).getText( ).equals("E&xit")){ shell.close( ); } text.setText("You selected " + ((MenuItem) event.widget).getText( )); } } public static void main(String[] args) { MenuClass menuExample = new MenuClass( ); } } You can see the results in Figure 9-6, where
we're selecting File Figure 9-6. Opening the File menu![]() If you do select File Figure 9-7. Selecting a menu item![]() 9.8.4 See AlsoRecipe 9.7 on creating a menu system; Recipe 9.9 on creating image menu items; Recipe 9.10 on creating radio menu items; Recipe 9.11 on creating menu item accelerators and mnemonics; Recipe 9.12 on enabling and disabling menu items; Chapter 8 in Eclipse (O'Reilly). |
![]() |
< Day Day Up > |
![]() |