java 24 - 7 GUI之 创建多级菜单窗体

需求:
  创建多级菜单

步骤:
  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 }

 

posted @ 2016-10-13 17:41  卡拉瓦  阅读(2136)  评论(0编辑  收藏  举报