Java AWT的菜单实例演示



Java AWT的菜单实例演示教程。

Java code复制代码
/**
  * @(#)TestLayout.java
  *
  *
  * @author 叶云策(intrl)
  * @version 1.00 2009/5/17
  */
import java.awt.*;
import java.awt.event.*;
public class SimpleMenu
{
    private Frame f=new Frame("测试");
    private MenuBar mb=new MenuBar();
    PopupMenu pop=new PopupMenu();
    Menu file=new Menu("文件");
    Menu edit=new Menu("编辑");
    MenuItem newItem=new MenuItem("新建");
    MenuItem saveItem=new MenuItem("保存");
    //创建exitItem菜单项,指定使用Ctrl+X快捷键
    MenuItem exitItem=new MenuItem("退出",new MenuShortcut(KeyEvent.VK_X));
    CheckboxMenuItem autoWrap=new CheckboxMenuItem("自动换行");
    MenuItem copyItem=new MenuItem("复制");
    MenuItem pasteItem=new MenuItem("粘贴");
    Menu format=new Menu("格式");
    //创建commentItem菜单项,指定使用Ctrl+Shift+/快捷键
    MenuItem commentItem=new MenuItem("注释",new MenuShortcut(KeyEvent.VK_SLASH,true));
    MenuItem cancelItem=new MenuItem("取消注释");
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    CheckboxMenuItem autoWrap1=new CheckboxMenuItem("自动换行");
    MenuItem copyItem1=new MenuItem("复制");
    MenuItem pasteItem1=new MenuItem("粘贴");
    Menu format1=new Menu("格式");
    //创建commentItem1菜单项
    MenuItem commentItem1=new MenuItem("注释");
    MenuItem cancelItem1=new MenuItem("取消注释");
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    private TextArea ta=new TextArea(6,40);
    public void init()
    {
        //以匿名内部类的形式创建菜单******
        ActionListener menuListener=new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                String cmd=e.getActionCommand();
                ta.append("单击'"+cmd+"'菜单"+"\n");
                if(cmd.equals("退出"))
                {
                    System.exit(0);
                }
            }
        };
        commentItem.addActionListener(menuListener);
        //
        commentItem1.addActionListener(menuListener);
        exitItem.addActionListener(menuListener);
        //为file菜单添加菜单项
        file.add(newItem);
        file.add(saveItem);
        file.add(exitItem);
        //为edit菜单添加菜单项
        edit.add(autoWrap);
        //使用addSeparator方法来添加菜单分隔线
        edit.addSeparator();
        edit.add(copyItem);
        edit.add(pasteItem);
        //为format菜单添加菜单项
        format.add(commentItem);
        format.add(cancelItem);
        //------------------------------------------------------------
        //为format1菜单添加菜单项
        format1.add(commentItem1);
        format1.add(cancelItem1);
        //------------------------------------------------------------
        //使用添加new MenuItem("-")的方式添加菜单分隔线
        edit.add(new MenuItem("-"));
        //将format菜单组合到edit菜单中,从而形成二级菜单
        edit.add(format);
        //============================================================
        //为pop菜单添加菜单项
        pop.add(autoWrap1);
        //使用addSeparator方法来添加菜单分隔线
        pop.addSeparator();
        pop.add(copyItem1);
        pop.add(pasteItem1);
        pop.add(new MenuItem("-"));
        pop.add(format1);
        ta.add(pop);
        ta.addMouseListener(new MouseAdapter(){
            public void mouseReleased(MouseEvent e)
            {
                if(e.isPopupTrigger())
                {
                    pop.show(ta,e.getX(),e.getY());
                }
            }
        });
        //============================================================
        //将file、edit菜单添加到mb菜单条中
        mb.add(file);
        mb.add(edit);
        //为f窗口设置菜单条
        f.setMenuBar(mb);
        //以匿名内部类的形式来创建事件******对象
        f.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e)
            {
                ta.append("用户试图关闭窗口!\n");
                System.exit(0);
            }
        });
        f.add(ta);
        f.pack();
        f.setVisible(true);
    }
    public static void main(String[] args)
    {
        new SimpleMenu().init();
    }
}

运行结果:

Tags:AWT菜单

作者:佚名