1、第十六讲 菜单设计,菜单设计,* 温故 *,布局设计 每个容器组件都可以设置它的布局管理器 空布局(null) 边界布局(BorderLayou) 流布局(FlowLayout) 卡片布局(CardLayout) 网格布局(GridLayout) 盒式布局(BoxLayout),* 知新 *,菜单条Menubar 菜单栏Menu 菜单项MenuItem 菜单项上的事件,菜单系统,可以在窗口中添加菜单栏(MenuBar),每个菜单栏可以包含若干个菜单(Menu),每个菜单可以包含若干个菜单项(MenuItem)。 创建菜单系统的步骤 创建MenuBar对象,将其加入到容器(比如:Frame对象的
2、setMenuBar()方法) 创建若干个Menu对象添加到MenuBar对象中 创建若干个MenuItem对象添加到相应的Menu对象中 处理MenuItem对象的ActionEvent事件,基本菜单设计,MenuBar类 构造方法:MenuBar() 方法:add(Menu m) Menu类 构造方法:Menu()、Menu(String label) 方法:add(MenuItem mi) MenuItem类 构造方法:MenuItem()、MenuItem(String label)、 MenuItem(String label,MenuShortcut s) 方法:setEnable
3、d(boolean b),菜单实例,import java.awt.*; public class MenuTest extends Frame MenuBar mb; Menu m1,m2;MenuItem mi1,mi2,mi3,mi4,mi5,mi6;public MenuTest()setSize(400,300); setLocation(100,100); mb=new MenuBar();/创建菜单栏对象setMenuBar(mb);/将菜单栏添加到框架窗口m1=new Menu(“文件“);/创建菜单文件m2=new Menu(“编辑“);/创建菜单编辑mb.add(m1);/
4、将菜单添加到菜菜单栏mb.add(m2);mi1=new MenuItem(“打开“);/创建菜单项mi2=new MenuItem(“保存“);mi3=new MenuItem(“关闭“);mi4=new MenuItem(“剪切“);mi5=new MenuItem(“复制“);mi6=new MenuItem(“粘贴“);,m1.add(mi1);/向文件菜单中添加菜单项m1.add(mi2);m1.add(mi3);m2.add(mi4);/向编辑菜单中添加菜单项m2.add(mi5);m2.add(mi6);show();/显示窗口public static void main(St
5、ringargs)new MenuTest(); ,菜单设计技巧,增加菜单分隔线 调用菜单(Menu)对象的方法:addSeparator(); 复选框菜单项 创建CheckboxMenuItem对象,并加到菜单对象中。 嵌入子菜单 Menu对象中可以添加Menu对象,被添加的Menu对象就是子菜单。 设置菜单项的快捷键 定义并创建MenuShortcut对象ms MenuShortcut(int key) key可作用KeyEvent类的常量值 调用MenuItem对象的setShortcut(ms)方法,可为菜单项对象设置快捷菜单。,例,import java.awt.*;import j
6、ava.awt.event.*; public class MenuTest extends Frame MenuShortcut ms=new MenuShortcut(KeyEvent.VK_Q);public MenuTest()m1.add(mi1);/向文件菜单中添加菜单项m1.add(mi2);m1.addSeparator();/向菜单中添加分隔符m1.add(mi3);m2.add(mi4);/向编辑菜单中添加菜单项m2.add(mi5);m2.add(mi6); mi3.setShortcut(ms); show();/显示窗口public static void main(Stringargs)new MenuTest(); ,菜单项的ActionEvent事件,菜单项注册事件监听器 选择“打开”菜单项时,弹出打开对话框 选择“关闭”菜单项时,退出系统 为关闭菜单项设置快捷键Ctrl+Q,弹出式菜单(了解),PopupMenu对象 show方法,作业,P180习题4,技能训练十六,训练目的 掌握菜单系统的创建方法与技巧 掌握菜单事件处理 训练内容及要求 编程并调试习题4 调试习题5,了解弹出式菜单的创建过程。,