【Java SE】AWT的菜单

示例程序:
  1/**
  2  * @(#)TestLayout.java
  3  *
  4  *
  5  * @author 叶云策(intrl)
  6  * @version 1.00 2009/5/17
  7  */

  8import java.awt.*;
  9import java.awt.event.*;
 10public class SimpleMenu
 11{
 12    private Frame f=new Frame("测试");
 13    private MenuBar mb=new MenuBar();
 14    PopupMenu pop=new PopupMenu();
 15    Menu file=new Menu("文件");
 16    Menu edit=new Menu("编辑");
 17    MenuItem newItem=new MenuItem("新建");
 18    MenuItem saveItem=new MenuItem("保存");
 19    //创建exitItem菜单项,指定使用Ctrl+X快捷键
 20    MenuItem exitItem=new MenuItem("退出",new MenuShortcut(KeyEvent.VK_X));
 21    CheckboxMenuItem autoWrap=new CheckboxMenuItem("自动换行");
 22    MenuItem copyItem=new MenuItem("复制");
 23    MenuItem pasteItem=new MenuItem("粘贴");
 24    Menu format=new Menu("格式");
 25    //创建commentItem菜单项,指定使用Ctrl+Shift+/快捷键
 26    MenuItem commentItem=new MenuItem("注释",new MenuShortcut(KeyEvent.VK_SLASH,true));
 27    MenuItem cancelItem=new MenuItem("取消注释");
 28    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 29    CheckboxMenuItem autoWrap1=new CheckboxMenuItem("自动换行");
 30    MenuItem copyItem1=new MenuItem("复制");
 31    MenuItem pasteItem1=new MenuItem("粘贴");
 32    Menu format1=new Menu("格式");
 33    //创建commentItem1菜单项
 34    MenuItem commentItem1=new MenuItem("注释");
 35    MenuItem cancelItem1=new MenuItem("取消注释");
 36    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 37    private TextArea ta=new TextArea(6,40);
 38    public void init()
 39    {
 40        //以匿名内部类的形式创建菜单监听器
 41        ActionListener menuListener=new ActionListener()
 42        {
 43            public void actionPerformed(ActionEvent e)
 44            {
 45                String cmd=e.getActionCommand();
 46                ta.append("单击'"+cmd+"'菜单"+"\n");
 47                if(cmd.equals("退出"))
 48                {
 49                    System.exit(0);
 50                }

 51            }

 52        }
;
 53        commentItem.addActionListener(menuListener);
 54        //
 55        commentItem1.addActionListener(menuListener);
 56        exitItem.addActionListener(menuListener);
 57        //为file菜单添加菜单项
 58        file.add(newItem);
 59        file.add(saveItem);
 60        file.add(exitItem);
 61        //为edit菜单添加菜单项
 62        edit.add(autoWrap);
 63        //使用addSeparator方法来添加菜单分隔线
 64        edit.addSeparator();
 65        edit.add(copyItem);
 66        edit.add(pasteItem);
 67        //为format菜单添加菜单项
 68        format.add(commentItem);
 69        format.add(cancelItem);
 70        //------------------------------------------------------------
 71        //为format1菜单添加菜单项
 72        format1.add(commentItem1);
 73        format1.add(cancelItem1);
 74        //------------------------------------------------------------
 75        //使用添加new MenuItem("-")的方式添加菜单分隔线
 76        edit.add(new MenuItem("-"));
 77        //将format菜单组合到edit菜单中,从而形成二级菜单
 78        edit.add(format);
 79        //============================================================
 80        //为pop菜单添加菜单项
 81        pop.add(autoWrap1);
 82        //使用addSeparator方法来添加菜单分隔线
 83        pop.addSeparator();
 84        pop.add(copyItem1);
 85        pop.add(pasteItem1);
 86        pop.add(new MenuItem("-"));
 87        pop.add(format1);
 88        ta.add(pop);
 89        ta.addMouseListener(new MouseAdapter(){
 90            public void mouseReleased(MouseEvent e)
 91            {
 92                if(e.isPopupTrigger())
 93                {
 94                    pop.show(ta,e.getX(),e.getY());
 95                }

 96            }

 97        }
);
 98        //============================================================
 99        //将file、edit菜单添加到mb菜单条中
100        mb.add(file);
101        mb.add(edit);
102        //为f窗口设置菜单条
103        f.setMenuBar(mb);
104        //以匿名内部类的形式来创建事件监听器对象
105        f.addWindowListener(new WindowAdapter(){
106            public void windowClosing(WindowEvent e)
107            {
108                ta.append("用户试图关闭窗口!\n");
109                System.exit(0);
110            }

111        }
);
112        f.add(ta);
113        f.pack();
114        f.setVisible(true);
115    }

116    public static void main(String[] args)
117    {
118        new SimpleMenu().init();
119    }

120}
运行结果:

posted on 2009-05-17 15:36 intrl 阅读(724) 评论(0)  编辑 收藏 引用 所属分类: Java

只有注册用户登录后才能发表评论。
<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

导航

统计

随笔分类(55)

随笔档案(34)

网址收藏

资源下载

随笔导航

搜索

最新评论

阅读排行榜

评论排行榜