需求:
创建多级菜单
步骤:
A:创建窗体对象(并设置属性和布局)
B:创建菜单栏
C:创建菜单和子菜单
D:逐步添加菜单(子菜单添加到菜单中,菜单添加到菜单栏中)
E:窗体中设置菜单栏(菜单栏并不是添加,而是设置)
F:设置各个菜单对应的监听事件
G:设置窗体关闭监听时间
H:设置显示窗口
代码:
1 public class FrameText4 { 2 3 public static void main(String[] args) { 4 5 // 创建窗体对象 6 final Frame f = new Frame("多级菜单"); 7 // 设置窗体属性 8 f.setBounds(300, 300, 500, 500); 9 f.setLayout(new FlowLayout()); 10 11 //获取原来的标题 12 final String str = f.getTitle(); 13 14 // 创建菜单栏 15 MenuBar m = new MenuBar(); 16 17 // 创建菜单 18 Menu m1 = new Menu("操作"); 19 Menu m2 = new Menu("更改标题"); 20 21 // 创建子菜单 22 final MenuItem mi1 = new MenuItem("N级菜单"); 23 final MenuItem mi2 = new MenuItem("M级菜单"); 24 MenuItem mi3 = new MenuItem("恢复标题"); 25 MenuItem mi4 = new MenuItem("退出"); 26 MenuItem mi5 = new MenuItem("打开记事本"); 27 28 // 逐步添加 29 // 子菜单添加到菜单中 30 m2.add(mi1); 31 m2.add(mi2); 32 m2.add(mi3); 33 m1.add(m2); 34 m1.add(mi5); 35 m1.add(mi4); 36 37 // 菜单添加到菜单栏中 38 m.add(m1); 39 40 // 窗体中设置菜单栏 41 f.setMenuBar(m); 42 43 // 设置各个菜单对应的监听事件 44 mi1.addActionListener(new ActionListener() { 45 46 public void actionPerformed(ActionEvent e) { 47 // 更改标题栏的名称 48 // 为了以后方便修改,首先获取mi1菜单的名称,再进行更改 49 f.setTitle(mi1.getLabel()); 50 // 把窗口的标题名称改为mi1的标签 51 } 52 }); 53 54 mi2.addActionListener(new ActionListener(){ 55 56 public void actionPerformed(ActionEvent e) { 57 //如mil1 58 f.setTitle(mi2.getLabel()); 59 } 60 61 }); 62 63 mi3.addActionListener(new ActionListener(){ 64 //这个跟上面2个有所不同,因为是恢复原来的标题。 65 //所以得在前面创建个字符串得到开始的标题,然后直接拿来更改就可以 66 public void actionPerformed(ActionEvent e) { 67 f.setTitle(str); 68 } 69 }); 70 71 //退出系统 72 mi4.addActionListener(new ActionListener(){ 73 74 public void actionPerformed(ActionEvent e) { 75 //退出系统 76 System.exit(0); 77 } 78 79 }); 80 81 //打开记事本 82 mi5.addActionListener(new ActionListener(){ 83 84 public void actionPerformed(ActionEvent e) { 85 //Runtime 使应用程序能够与其运行的环境相连接 86 //public static Runtime getRuntime()返回与当前 Java 应用程序相关的运行时对象。 87 //public Process exec(String command)在单独的进程中执行指定的字符串命令。 88 89 Runtime r = Runtime.getRuntime(); 90 try { 91 r.exec("notepad"); 92 } catch (IOException e1) { 93 // TODO Auto-generated catch block 94 e1.printStackTrace(); 95 } 96 97 } 98 99 }); 100 101 //设置窗口关闭监听事件 102 f.addWindowListener(new WindowAdapter(){ 103 public void windowClosing(WindowEvent e) { 104 System.exit(0); 105 } 106 }); 107 108 //使窗体显示 109 f.setVisible(true); 110 } 111 112 }