欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

菜单Menu和菜单项MenuItem

程序员文章站 2022-07-14 18:16:52
...

菜单Menu和菜单项MenuItem

一.程序的功能介绍

文件子菜单下面有新建,打开和退出子选项。视图下面有普通子选项。

二.程序分区讲解

(1)在shell窗口中添加菜单条(主菜单)——menu_Bar;

类型是菜单(Menu)样式是菜单条(SWT.BAR)。

(2)然后在主菜单中添加两个子菜单——文件子菜单fileItem和视图子菜单viewItem;

类型是菜单选项(MenuItem)样式是可以有子菜单(SWT.CASCADE)。

(3)在shell窗口中添加两个下拉条菜单——对应文件子菜单的下拉条file_Down和对应视图子菜单的下拉条view_Down;

类型是菜单(Menu)样式是可以下拉条(SWT.DROP_DOWN)。

(4)分别在两个下拉条下添加三个文件菜单选项和一个视图菜单选项。

类型是菜单选项(MenuItem)样式是可以按钮(SWT.PUSH)。

(5)然后将文件子菜单与文件下拉条相关联,视图子菜单与视图下拉条相关联。即将下拉式菜单绑定到菜单项的下面

(6)在shell中显示菜单条(主菜单)。shell.setMenuBar(menu_Bar)。

三.知识注意点

菜单选项只有在菜单下添加。即MenuItem   menuItem=new  MenuItem(Menu,SWT.CASCADE);  

一个菜单可以包含多个菜单项。

将菜单绑定到控件上。对于所有控件(Control)都可以使用setMenu(Menu,menu)方法将一个菜单绑定到一个控件,这样绑定的菜单为右键弹出式菜单。

对于Shell窗口控件,除了可以使用setMenu(Menu menu)方法设置弹出式菜单外,还可以使用setMenuBar(Menu menu)设置显示在窗口上方的菜单。

四.菜单的样式

(1)SWT.BAR:Shell菜单栏中的菜单

Menu menu_Bar=new Menu(shell,SWT.BAR);

shell.setMenuBar(menu_Bar);若将创建菜单的样式改为其他的,而不是SWT.BAR的话,运行时会抛出“Menu is not a BAR”。

(2)SWT.DROP_DOWN:从菜单栏或者菜单项中弹出的菜单。

本程序中使用的文件菜单就是一个下拉式菜单。创建下拉式菜单时,所放置这个下拉式菜单的菜单样式必须是SWT.CASCADE,否则会抛出“Menu item is not 啊CASCADE”。

方法一

MenuItem fileItem=new MenuItem(menu_Bar,SWT.CASCADE);//弹出菜单的菜单项
Menu file_Down=new Menu(shell,SWT.DROP_DOWN);//弹出的菜单
fileItem.setMenu(file_Down);//将菜单附加到菜单项上

方法二

MenuItem fileItem=new MenuItem(menu_Bar,SWT.CASCADE);//弹出菜单的菜单项
//如果将附加的菜单项作为构造方法,默认为下拉式菜单
Menu file_Down=new Menu(fileItem);
fileItem.setMenu(file_Down);//将菜单附加到菜单项上

(3)SWT.POP_UP:单击鼠标右键弹出的菜单。

这种弹出式菜单适用于作为上下文菜单。

MenuItem fileItem=new MenuItem(menu_Bar,SWT.CASCADE);//弹出菜单的菜单项
//如果将附加的菜单项作为构造方法,默认为下拉式菜单
Menu file_Down=new Menu(shell,POP_UP);
shell.setMenu(file_Down);//将菜单附加到菜单项上

效果:在窗口的任意位置单击鼠标右键,将弹出右键菜单。

五.菜单项的样式

SWT.PUSH:普通的菜单项,单击类似于按钮的操作。

SWT.RADIO:可以在几个选项之间选中一个,并且选中的选项以黑圆点表示。

SWT.CHECK:类似于多选框,可以同时选中多个选项,并且选中的选项以对勾符号表示。

SWT.CASCADE:可以包含一个下拉菜单的菜单项。

SWT.SEPARATOR:充当分隔条的菜单项,通常没有其他意义。

六.设置菜单项的快捷项

MenuItem createItem=new MenuItem(file_Down,SWT.PUSH);
createItem.setText("新建(&N) ALT+SHIFT+N");
createItem.setAccelerator(SWT.ALT+SWT.SHIFT+'N');//设置快捷键

七.源码

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
public class E{
	public static void main(String[] args){
		Display display=new Display();
		final Shell shell=new Shell(display);
		shell.setText("菜单Menu和菜单项MenuItem");
		
		//创建一个菜单-菜单条
		Menu menu_Bar=new Menu(shell,SWT.BAR);
		
		//(只能)在菜单条上创建一个文件菜单项,可以存在子菜单
		MenuItem fileItem=new MenuItem(menu_Bar,SWT.CASCADE);
		fileItem.setText("文件");
		
		//创建一个文件菜单项对应的文件下拉条
		Menu file_Down=new Menu(shell,SWT.DROP_DOWN);
		
		//在下拉条下创建三个菜单项
		MenuItem createItem=new MenuItem(file_Down,SWT.PUSH);
		createItem.setText("新建(&N)");
		MenuItem openItem=new MenuItem(file_Down,SWT.PUSH);
		openItem.setText("打开(&O)");
		
		//创建一个分割线
		new MenuItem(file_Down,SWT.SEPARATOR);
				
		MenuItem exitItem=new MenuItem(file_Down,SWT.PUSH);
		exitItem.setText("退出(&E)");
			
		//为退出窗口注册监听事件
		exitItem.addListener(SWT.Selection,new Listener(){
			public void handleEvent(Event event){
				shell.dispose();//释放shell窗口
			}
		});
		
		//将文件的下拉条与文件的菜单项进行关联
		fileItem.setMenu(file_Down);
	
		//创建一个视图菜单选项,下面具有子菜单
		MenuItem viewItem=new MenuItem(menu_Bar,SWT.CASCADE);
		viewItem.setText("视图");
		
		//创建一个视图菜单选项对应的视图下拉条
		Menu view_Down=new Menu(shell,SWT.DROP_DOWN);
		
		//在视图下拉条下创建一个普通视图选项
		MenuItem normalItem=new MenuItem(view_Down,SWT.PUSH);
		normalItem.setText("普通(&N)");
		
		//将视图的菜单选项与视图的下拉条相关联
		viewItem.setMenu(view_Down);
		
		//显示菜单条
		shell.setMenuBar(menu_Bar);
		
		//打开窗口,进行窗口的显示
		//shell.setSize(400,400);
		shell.pack();
		shell.open();
		while(!shell.isDisposed()){
			//当窗口没有被释放的时候
			if(!display.readAndDispatch()){
				display.sleep();
			}		
		}
		display.dispose();
	}
}