Java Tutorial/SWT/Menu

Материал из Java эксперт
Перейти к: навигация, поиск

Add MenuItem to Menu

   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; public class MenuAddMenuItem {

 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new GridLayout());
   // Create the bar menu
   Menu menuBar = new Menu(shell, SWT.BAR);
   // Create the File item"s dropdown menu
   Menu fileMenu = new Menu(menuBar);
   // Create all the items in the bar menu
   MenuItem fileItem = new MenuItem(menuBar, SWT.CASCADE);
   fileItem.setText("File");
   fileItem.setMenu(fileMenu);
   // Create all the items in the File dropdown menu
   MenuItem newItem = new MenuItem(fileMenu, SWT.NONE);
   newItem.setText("New");
   MenuItem openItem = new MenuItem(fileMenu, SWT.NONE);
   openItem.setText("Open...");
   MenuItem saveItem = new MenuItem(fileMenu, SWT.NONE);
   saveItem.setText("Save");
   MenuItem saveAsItem = new MenuItem(fileMenu, SWT.NONE);
   saveAsItem.setText("Save As...");
   shell.setMenuBar(menuBar);
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch()) {
       display.sleep();
     }
   }
 }

}</source>





Add Menu Separator

   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; public class MenuSeparatorAdd {

 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new GridLayout());
   // Create the bar menu
   Menu menuBar = new Menu(shell, SWT.BAR);
   // Create the File item"s dropdown menu
   Menu fileMenu = new Menu(menuBar);
   // Create all the items in the bar menu
   MenuItem fileItem = new MenuItem(menuBar, SWT.CASCADE);
   fileItem.setText("File");
   fileItem.setMenu(fileMenu);
   // Create all the items in the File dropdown menu
   MenuItem newItem = new MenuItem(fileMenu, SWT.NONE);
   newItem.setText("New");
   //  Create the first separator
   new MenuItem(fileMenu, SWT.SEPARATOR);
   
   MenuItem saveItem = new MenuItem(fileMenu, SWT.NONE);
   saveItem.setText("Save");
   shell.setMenuBar(menuBar);
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch()) {
       display.sleep();
     }
   }
 }

}</source>





Cascade Menu

   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; public class MenuCascade {

 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new GridLayout());
   Button bn = new Button(shell, SWT.FLAT);
   bn.setText("Right Click to see the popup menu");
   
   Menu popupMenu = new Menu(bn);
   MenuItem newItem = new MenuItem(popupMenu, SWT.CASCADE);
   newItem.setText("New");
   MenuItem refreshItem = new MenuItem(popupMenu, SWT.NONE);
   refreshItem.setText("Refresh");
   MenuItem deleteItem = new MenuItem(popupMenu, SWT.NONE);
   deleteItem.setText("Delete");
   Menu newMenu = new Menu(popupMenu);
   newItem.setMenu(newMenu);
   MenuItem shortcutItem = new MenuItem(newMenu, SWT.NONE);
   shortcutItem.setText("Shortcut");
   MenuItem iconItem = new MenuItem(newMenu, SWT.NONE);
   iconItem.setText("Icon");
   bn.setMenu(popupMenu);
   
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch()) {
       display.sleep();
     }
   }
 }

}</source>





Enable menu items dynamically (when menu shown)

   <source lang="java">

/*******************************************************************************

* Copyright (c) 2000, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     IBM Corporation - initial API and implementation
*******************************************************************************/

import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeItem; public class MenuItemEnableDynamically {

 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   final Tree tree = new Tree(shell, SWT.BORDER | SWT.MULTI);
   final Menu menu = new Menu(shell, SWT.POP_UP);
   tree.setMenu(menu);
   for (int i = 0; i < 12; i++) {
     TreeItem treeItem = new TreeItem(tree, SWT.NONE);
     treeItem.setText("Item " + i);
     MenuItem menuItem = new MenuItem(menu, SWT.PUSH);
     menuItem.setText(treeItem.getText());
   }
   menu.addListener(SWT.Show, new Listener() {
     public void handleEvent(Event event) {
       MenuItem[] menuItems = menu.getItems();
       TreeItem[] treeItems = tree.getSelection();
       for (int i = 0; i < menuItems.length; i++) {
         String text = menuItems[i].getText();
         int index = 0;
         while (index < treeItems.length) {
           if (treeItems[index].getText().equals(text))
             break;
           index++;
         }
         menuItems[i].setEnabled(index != treeItems.length);
       }
     }
   });
   tree.setSize(200, 200);
   shell.setSize(300, 300);
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch())
       display.sleep();
   }
   display.dispose();
 }

}</source>





Fill a menu dynamically (when menu shown)

   <source lang="java">

/*******************************************************************************

* Copyright (c) 2000, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     IBM Corporation - initial API and implementation
*******************************************************************************/

/*

* Menu example snippet: fill a menu dynamically (when menu shown)
*
* For a list of all SWT example snippets see
* http://www.eclipse.org/swt/snippets/
*/

import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeItem; public class MenuFillDynamically {

 public static void main(String[] args) {
   final Display display = new Display();
   Shell shell = new Shell(display);
   final Tree tree = new Tree(shell, SWT.BORDER | SWT.MULTI);
   final Menu menu = new Menu(shell, SWT.POP_UP);
   tree.setMenu(menu);
   for (int i = 0; i < 12; i++) {
     TreeItem item = new TreeItem(tree, SWT.NONE);
     item.setText("Item " + i);
   }
   menu.addListener(SWT.Show, new Listener() {
     public void handleEvent(Event event) {
       MenuItem[] menuItems = menu.getItems();
       for (int i = 0; i < menuItems.length; i++) {
         menuItems[i].dispose();
       }
       TreeItem[] treeItems = tree.getSelection();
       for (int i = 0; i < treeItems.length; i++) {
         MenuItem menuItem = new MenuItem(menu, SWT.PUSH);
         menuItem.setText(treeItems[i].getText());
       }
     }
   });
   tree.setSize(200, 200);
   shell.setSize(300, 300);
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch())
       display.sleep();
   }
   display.dispose();
 }

}</source>