AWT 绘制菜单

1.MenuBar类  是菜单条

2.Menu类 是菜单条中的选项

3.MenuItem类 是菜单(Menu类)的选项



(一)菜单绘制

import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.MenuShortcut;
import java.awt.event.KeyEvent;

public class MenU {
	
	Frame f = new Frame("Menutest");
	//菜单条
	MenuBar mb = new MenuBar();
	
	//菜单
	Menu file = new Menu("文件");
	Menu edit = new Menu("编辑");
	
	//菜单选项
	MenuItem newItem = new MenuItem("新建");
	MenuItem saveItem = new MenuItem("保存");
	MenuItem closeItem = new MenuItem("关闭",new MenuShortcut(KeyEvent.VK_X));	//设置快捷键CTRL+X
	public void init()
	{
		/*Menu加入MenuBar中*/
		mb.add(file);
		mb.add(edit);
		file.add(newItem);
		/*MenuItem 加入 Menu中*/
		file.add(saveItem);		
		file.addSeparator();	//加下划线
		file.add(closeItem);
		
		f.setMenuBar(mb);	//窗口f中加入菜单跳
		f.pack();
		f.setVisible(true);
	}
	public static void main(String[] args)
	{
		new MenU().init();
	}
}
效果:


(二)二级菜单绘制
*:二级菜单就是 把 Menu对象加入 Menu对象中就行了。


import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.MenuShortcut;
import java.awt.event.KeyEvent;

public class MenU {
	
	Frame f = new Frame("Menutest");
	//菜单条
	MenuBar mb = new MenuBar();
	
	//菜单
	Menu file = new Menu("文件");
	Menu edit = new Menu("编辑");
	Menu javaFile = new Menu("java文件");
	
	//菜单选项
	MenuItem newItem = new MenuItem("新建");
	MenuItem saveItem = new MenuItem("保存");
	MenuItem closeItem = new MenuItem("关闭",new MenuShortcut(KeyEvent.VK_X));	//设置快捷键CTRL+X
	MenuItem javaClass = new MenuItem("java类文件");
	MenuItem javaPacket = new MenuItem("java包");
	public void init()
	{
		/*Menu加入MenuBar中*/
		mb.add(file);
		mb.add(edit);
		file.add(newItem);
		/*MenuItem 加入 file Menu中*/
		file.add(saveItem);		
		file.addSeparator();	//加下划线
		file.add(closeItem);
		/*Menu加入Menu,形成二级菜单*/
		file.add(javaFile);
		javaFile.add(javaClass);
		javaFile.add(javaPacket);
		
		f.setMenuBar(mb);	//窗口f中加入菜单跳
		f.pack();
		f.setVisible(true);
	}
	public static void main(String[] args)
	{
		new MenU().init();
	}
}



(三)右键出现菜单
*:实现此功能,需要实现PopupMenu对象

*:要创建一块 Panel 来装PopupMenu。


public class MenU {
	
	Frame f = new Frame("Menutest");
	Panel p = new Panel();
	PopupMenu pop = new PopupMenu();
	
	//MenuItem
	MenuItem copyItem = new MenuItem("复制");
	MenuItem plaItem = new MenuItem("粘贴");
	
	public void init()
	{
		p.setPreferredSize(new Dimension(300,160));//设置Panel的大小
		p.add(pop);
		
		/*往Panel中添加鼠标监听器*/
		p.addMouseListener(new MouseAdapter()
				{
					//鼠标释放
					public void mouseReleased(MouseEvent e)
					{
						//若释放的是鼠标右键
						if(e.isPopupTrigger())
						{
							pop.show(p, e.getX(), e.getY());  //右键菜单出现在鼠标的X,Y坐标
						}
					}
				});
		//MenuItem 加入PopupMenu中
		pop.add(copyItem);
		pop.add(plaItem);
		
		f.add(p,BorderLayout.SOUTH);
		f.pack();
		f.setVisible(true);
	}
	public static void main(String[] args)
	{
		new MenU().init();
	}
}


(四)菜单选项点击触发


当点击新建,保存,关闭时,会触发相应事件。下面的例子代码触发的是在文本框中显示菜单选项的名字

public class MenU {  
      
    Frame f = new Frame("Menutest");  
    TextArea ta = new TextArea(6,40);
    //菜单条  
    MenuBar mb = new MenuBar();  
      
    //菜单  
    Menu file = new Menu("文件");  
    Menu edit = new Menu("编辑");  
      
    //菜单选项  
    MenuItem newItem = new MenuItem("新建");  
    MenuItem saveItem = new MenuItem("保存");  
    MenuItem closeItem = new MenuItem("关闭",new MenuShortcut(KeyEvent.VK_X));    //设置快捷键CTRL+X  
    public void init()  
    {  
        /*Menu加入MenuBar中*/  
        mb.add(file);  
        mb.add(edit);  
        file.add(newItem);  
        /*MenuItem 加入 Menu中*/  
        file.add(saveItem);       
        file.addSeparator();    //加下划线  
        file.add(closeItem);  
        
        /*(用Lambda表达式)实现包含点击操作的ActionListener监听器*/
        ActionListener menuListener = e->
        {
        	String cmd = e.getActionCommand();
        	ta.append(cmd);
        };
        
        /*按钮加入ActionListener监听器*/
        newItem.addActionListener(menuListener);
        saveItem.addActionListener(menuListener);
        closeItem.addActionListener(menuListener);
        
        f.add(ta,BorderLayout.SOUTH);
        f.setMenuBar(mb);   //窗口f中加入菜单跳  
        f.pack();  
        f.setVisible(true);  
    }  
    public static void main(String[] args)  
    {  
        new MenU().init();  
    }  
}  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值