百度空间 | 百度首页 
 
查看文章
 
SWT中MenuItem的使用。。
2009年06月17日 星期三 21:56

package menu;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.HelpEvent;
import org.eclipse.swt.events.HelpListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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.Text;

public class MenuExample1 {
 Display display;
 Shell shell;
 Menu menuBar, fileMenu, secondMenu_Radio, secondMenu_Check, helpMenu;
 MenuItem fileMenuHeader, helpMenuHeader;
 MenuItem filePushItem, fileSeperatorItem, exitItem, helpItem,
   secondMenu_RadioItem, radioItem1, radioItem2, secondMenu_CheckItem,
   checkItem1, checkItem2;
 Text text;

 public MenuExample1() {
  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, 50);

  // 在shell的顶部创建菜单区域,菜单栏的样式必须为SWT.BAR。
  // 可用的样式包括:BAR, DROP_DOWN, POP_UP, NO_RADIO_GROUP,LEFT_TO_RIGHT,
  // RIGHT_TO_LEFT
  menuBar = new Menu(shell, SWT.BAR);

  {
   // 创建File菜单
   fileMenuHeader = new MenuItem(menuBar, SWT.CASCADE);// 确保样式是SWT.CASCADE,即级联菜单,这样才会弹出下拉菜单。
   fileMenuHeader.setText("&File");
   // 追加菜单
   fileMenu = new Menu(shell, SWT.DROP_DOWN);
   fileMenuHeader.setMenu(fileMenu);
   filePushItem = new MenuItem(fileMenu, SWT.PUSH);
   filePushItem.setText("&PushMenuItem");

   // 分割栏
   fileSeperatorItem = new MenuItem(fileMenu, SWT.SEPARATOR);

   // 子菜单
   secondMenu_RadioItem = new MenuItem(fileMenu, SWT.CASCADE);
   secondMenu_RadioItem.setText("RadioMenu");
   secondMenu_Radio = new Menu(shell, SWT.DROP_DOWN);
   secondMenu_RadioItem.setMenu(secondMenu_Radio);
   radioItem1 = new MenuItem(secondMenu_Radio, SWT.RADIO);
   radioItem1.setText("Radio1");
   radioItem2 = new MenuItem(secondMenu_Radio, SWT.RADIO);
   radioItem2.setText("Radio3");

   secondMenu_CheckItem = new MenuItem(fileMenu, SWT.CASCADE);
   secondMenu_CheckItem.setText("Check");
   secondMenu_Check = new Menu(shell, SWT.DROP_DOWN);
   secondMenu_CheckItem.setMenu(secondMenu_Check);
   checkItem1 = new MenuItem(secondMenu_Check, SWT.CHECK);
   checkItem1.setText("Check1");
   checkItem2 = new MenuItem(secondMenu_Check, SWT.CHECK);
   checkItem2.setText("Check2");
   // checkItem1.setImage(image)
  }

  {
   // 然后通过setAccelerator来设置快捷键,为CTRL+x,
   // 此时用户可以不需要打开菜单就可以执行该操作

   helpMenuHeader = new MenuItem(menuBar, SWT.CASCADE);
   helpMenuHeader.setText("&Help");
   helpMenu = new Menu(shell, SWT.DROP_DOWN);
   helpMenuHeader.setMenu(helpMenu);
   exitItem = new MenuItem(helpMenu, SWT.PUSH);
   exitItem.setText("E&xit\tCtrl+X");
   exitItem.setAccelerator(SWT.CTRL + 'X');
   helpItem = new MenuItem(helpMenu, SWT.PUSH);
   helpItem.setText("Help\tF1");
  }

  // 事件处理
  {
   // pushItem
   filePushItem.addListener(SWT.Selection, new Listener() {
    public void handleEvent(Event event) {
     text.setText(((MenuItem) event.widget).getText()
       + "Action performed!");
    }
   });
   // radio
   radioItem1.addListener(SWT.Selection, new Listener() {
    public void handleEvent(Event e) {
     text.setText("Radio item toggled to:"
       + radioItem1.getSelection());
    }
   });
   // check
   checkItem1.addListener(SWT.Selection, new Listener() {
    public void handleEvent(Event e) {
     text.setText("Check item toggled to:"
       + checkItem1.getSelection());
    }
   });
   // exit
   exitItem.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(SelectionEvent arg0) {
     shell.close();
    }
   });
   // 帮助监听器HelpListener,通过按下F1/Help键,HelpListener被触发
   helpItem.addHelpListener(new HelpListener() {
    public void helpRequested(HelpEvent e) {
     text.setText("Help requested on SubAction");
    }
   });

  }

  shell.setMenuBar(menuBar);
  shell.open();
  while (!shell.isDisposed()) {
   if (!display.readAndDispatch())
    display.sleep();
  }
  display.dispose();
 }

 public static void main(String[] args) {
  MenuExample1 menuExample = new MenuExample1();
 }
}

如果想变成右键快捷菜单,那就更简单了:将上面的代码稍加处理就可以了。如下:

menuBar = new Menu(shell, SWT.BAR);》》》》》》》》》menuBar = new Menu(shell, SWT.POP_UP);

shell.setMenuBar(menuBar);》》》》》》》》》shell.setMenu(menuBar);

转自:http://yianpuodiaotu.javaeye.com/blog/373466


类别:swt,eclipse等 | | 添加到搜藏 | 分享到i贴吧 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2010 Baidu