SWT 快捷键

 copyaction.setAccelerator(SWT.CTRL|'c');

 

 

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Image;
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 MenuTest {
 static Display display = new Display();
 static Shell shell = new Shell(display);

 /*
  * 创建多级菜单, 采用SWT.CASCADE样式值可以加入子菜单,采用SWT.PUSH样式值不可以加入子菜单
  */
 public static void createMenu() {

  shell.setSize(500, 500);
  shell.setText("menu test window");
  shell.setImage(new Image(display, "images/Home.png"));

  // 通过shell对象和SWT.BAR样式值来创建一个菜单条
  Menu menu = new Menu(shell, SWT.BAR);
  // 在菜单条的基础之上创建一个File的菜单
  MenuItem file = new MenuItem(menu, SWT.CASCADE);
  file.setText("&File");
  // 先在Shell上创建一个下拉框,然后将下拉框添加到File菜单上
  Menu filemenu = new Menu(shell, SWT.DROP_DOWN);
  file.setMenu(filemenu);
  // 在下拉框上创建菜单项Open
  final MenuItem openItem = new MenuItem(filemenu, SWT.CASCADE);
  openItem.setText("&Open");
  // 在shell上创建一个下拉框,并把它加到open菜单上
  Menu childmenu = new Menu(shell, SWT.DROP_DOWN);
  openItem.setMenu(childmenu);
  // 在open菜单上创建一个子菜单child
  final MenuItem childItem = new MenuItem(childmenu, SWT.PUSH);
  childItem.setText("&Child");
  // 在open菜单上创建一个子菜单dialog
  final MenuItem dialogItem = new MenuItem(childmenu, SWT.PUSH);
  dialogItem.setText("&Dialog");
  // 在菜单项之间创建一个分隔符
  new MenuItem(filemenu, SWT.SEPARATOR);
  // 在下拉框上创建菜单项Exit
  MenuItem exitItem = new MenuItem(filemenu, SWT.PUSH);
  exitItem.setText("&Exit");

  // 设置edit菜单
  MenuItem edit = new MenuItem(menu, SWT.CASCADE);
  edit.setText("&Edit");
  Menu editmenu = new Menu(shell, SWT.DROP_DOWN);
  edit.setMenu(editmenu);
  MenuItem cutItem = new MenuItem(editmenu, SWT.PUSH);
  cutItem.setText("&Cut\tCTRL+X");
  // 设置快捷键
  cutItem.setAccelerator(SWT.CTRL + 'X');
  // 在菜单项之间创建一个分隔符
  new MenuItem(editmenu, SWT.SEPARATOR);
  MenuItem copyItem = new MenuItem(editmenu, SWT.PUSH);
  copyItem.setText("&Copy\tCTRL+C");
  // 设置快捷键
  copyItem.setAccelerator(SWT.CTRL + 'C');
  // 在菜单项之间创建一个分隔符
  new MenuItem(editmenu, SWT.SEPARATOR);
  MenuItem pasteItem = new MenuItem(editmenu, SWT.PUSH);
  pasteItem.setText("&Paste\tCTRL+V");
  // 设置快捷键
  pasteItem.setAccelerator(SWT.CTRL + 'V');

  // 设置window菜单
  MenuItem window = new MenuItem(menu, SWT.CASCADE);
  window.setText("&Window");
  Menu windowmenu = new Menu(shell, SWT.DROP_DOWN);
  window.setMenu(windowmenu);
  final MenuItem maxItem = new MenuItem(windowmenu, SWT.PUSH);
  maxItem.setText("&Max");
  // 在菜单项之间创建一个分隔符
  new MenuItem(windowmenu, SWT.SEPARATOR);
  MenuItem minItem = new MenuItem(windowmenu, SWT.PUSH);
  minItem.setText("&Min");

  // 设置help菜单
  MenuItem help = new MenuItem(menu, SWT.CASCADE);
  help.setText("&Help");
  Menu helpmenu = new Menu(shell, SWT.DROP_DOWN);
  help.setMenu(helpmenu);
  MenuItem aboutItem = new MenuItem(helpmenu, SWT.PUSH);
  aboutItem.setText("&About");

  // 添加一个option菜单,用于添加单选菜单和复选菜单
  MenuItem option = new MenuItem(menu, SWT.CASCADE);
  option.setText("&Option");
  Menu optionmenu = new Menu(shell, SWT.DROP_DOWN);
  option.setMenu(optionmenu);
  MenuItem checkItem1 = new MenuItem(optionmenu, SWT.CHECK);
  checkItem1.setText("Check1");
  MenuItem checkItem2 = new MenuItem(optionmenu, SWT.CHECK);
  checkItem2.setText("Check2");
  // 设置默认为选中
  checkItem2.setSelection(true);
  // 设置分隔符
  new MenuItem(optionmenu, SWT.SEPARATOR);
  MenuItem radioItem1 = new MenuItem(optionmenu, SWT.RADIO);
  radioItem1.setText("Radio1");
  // 设置默认为选中
  radioItem1.setSelection(true);
  MenuItem radioItem2 = new MenuItem(optionmenu, SWT.RADIO);
  radioItem2.setText("Radio2");

  // 为菜单添加相应的事件
  childItem.addSelectionListener(new SelectionListener() {

   @Override
   public void widgetSelected(SelectionEvent arg0) {
    // TODO Auto-generated method stub
    Shell parent = (Shell) maxItem.getParent().getParent()
      .getParent();
    Shell child = new Shell(parent, SWT.RESIZE | SWT.MAX);
    child.setText("child item has been clicked");
    child.setImage(new Image(display, "images/Alert.png"));
    child.setSize(400, 100);
    child.open();
   }

   @Override
   public void widgetDefaultSelected(SelectionEvent arg0) {
    // TODO Auto-generated method stub
   }
  });

  // 将菜单条添加到shell上
  shell.setMenuBar(menu);
  // 弹出右键菜单
  shell.setMenu(createEditPopup());
  shell.open();
  while (!shell.isDisposed()) {
   if (display.readAndDispatch()) {
    display.sleep();
   }
  }
  display.dispose();
 }

 /*
  * 创建一个右键菜单 通过样式值SWT.POP_UP来创建一个右键弹出菜单
  */
 public static Menu createEditPopup() {
  Menu popMenu = new Menu(shell, SWT.POP_UP);
  MenuItem cutItem = new MenuItem(popMenu, SWT.PUSH);
  cutItem.setText("&Cut");
  MenuItem copyItem = new MenuItem(popMenu, SWT.PUSH);
  copyItem.setText("&Copy");
  MenuItem pasteItem = new MenuItem(popMenu, SWT.PUSH);
  pasteItem.setText("&Paste");
  cutItem.addSelectionListener(new SelectionListener() {

   @Override
   public void widgetSelected(SelectionEvent arg0) {
    // TODO Auto-generated method stub
    System.out.println("cut");
   }

   @Override
   public void widgetDefaultSelected(SelectionEvent arg0) {
    // TODO Auto-generated method stub

   }
  });
  pasteItem.addSelectionListener(new SelectionListener() {

   @Override
   public void widgetSelected(SelectionEvent arg0) {
    // TODO Auto-generated method stub
    System.out.println("paste");
   }

   @Override
   public void widgetDefaultSelected(SelectionEvent arg0) {
    // TODO Auto-generated method stub

   }
  });
  copyItem.addSelectionListener(new SelectionListener() {

   @Override
   public void widgetSelected(SelectionEvent arg0) {
    // TODO Auto-generated method stub
    System.out.println("copy");
   }

   @Override
   public void widgetDefaultSelected(SelectionEvent arg0) {
    // TODO Auto-generated method stub

   }
  });
  return popMenu;
 }

 public static void main(String[] args) {
  MenuTest.createMenu();

 }
}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值