`
孙瑞鸿
  • 浏览: 17155 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

菜单

阅读更多
高级swing组之菜单应用
1 菜单的基本概念
Menu包括两种:基于菜单条的:一般加在JFrame上
                         JPopupMenu:弹出式菜单
javax.swing.JMenuBar类:放置菜单的菜单条
javax.swing.JMenu:菜单目录对象
javax.swing.JMenuItem:菜单条目
         关系:JMenuItem,JMenu都可以是JMenu的子项
                   (JMenuItem必须放在JMenu上)
JMenu必须放在JMenuBar上

2 基于菜单条
     说明:已创建DrawBorder类,继承 JFrame;
(1)初始化窗体
public void initUI(){
		this.setTitle("简单的菜单界面");
		this.setLayout(new java.awt.FlowLayout());
		this.setSize(300,500);
		this.setDefaultCloseOperation(3);
		this.setResizable(true);
		this.setJMenuBar(this.getMenu());
		DrawListener dl=new DrawListener(this);
		this.addMouseListener(dl);
		//将JDesktopPane对象放到面板上
		this.setContentPane(jdp);//jdp在类的头部已声明
		this.setVisible(true);
	}

        (2)取得菜单条函数getMenu()
思路:将菜单条目加到菜单目录上,将菜单目录加到菜单条上,将菜单条返回
给菜单条目加监听器,执行统一的处理方法
public JMenuBar getMenu(){
			//实例化菜单条
			JMenuBar mb=new JMenuBar();
			//实例化菜单目录对象
			JMenu jm=new JMenu("文件");
			//实例化菜单条目
			JMenuItem mi=new JMenuItem("新建");
			JMenuItem mi1=new JMenuItem("退出");
		
			JMenu jm1=new JMenu("编辑");
			JMenuItem mii=new JMenuItem("修改");
			JMenuItem mii1=new JMenuItem("退出");
			//创建内部类的菜单事件监听器对象
			ActionListener ac_listener=new ActionListener(){
				//调用统一的处理方法
				public void actionPerformed(ActionEvent e){
					processMenuEvent(e);
				}
			};
			//给菜单条目添加监听器
			mi.addActionListener(ac_listener);
			mi1.addActionListener(ac_listener);
			mii.addActionListener(ac_listener);
			mii1.addActionListener(ac_listener);
			//将菜单条目添加到菜单目录上
			jm.add(mi);
			jm.add(mi1);
			jm1.add(mii);
			jm1.add(mii1);
			//将菜单目录添加到菜单条上
			mb.add(jm);
			mb.add(jm1);
			return mb;
		}

         (3)菜单事件的处理方法
根据菜单条目的不同执行相应的操作
private void processMenuEvent(ActionEvent e){
	String command=e.getActionCommand();
			if(command.equals("修改")){
				//实例化内部窗体并设置属性
				JInternalFrame jin=new JInternalFrame();
				jin.setTitle("内部窗体");
				jin.setSize(200,300);
				jin.setVisible(true);
				jin.setMaximizable(true);
				jdp.add(jin);
			}else if(command.equals("新建")){
				//弹出一个对话框
				JOptionPane.showInputDialog("要创建什么?");
				//程序退出
			}else if(command.equals("退出")){
				System.exit(0);
			}
		}

3 弹出菜单
说明:在监听器中进行
(1)使用构造方法将窗体传到监听器中
在mousePressed方法中取得点击的点坐标,在该位置弹出菜单
public void mousePressed(MouseEvent e) {
		x=e.getX();
		y=e.getY();
		JPopupMenu jp=getPop();
		jp.show(jf, x, y);
	}

        (2)取得弹出菜单
在弹出菜单中添加菜单目录,目录上添加菜单条目,返回弹出菜单
public JPopupMenu getPop(){
		JPopupMenu pm=new JPopupMenu();
		JMenuItem mi=new JMenuItem("刷新");
		JMenuItem mi1=new JMenuItem("复制");
		JMenuItem mi2=new JMenuItem("粘贴");
		pm.add(mi);
		pm.add(mi1);
		pm.add(mi2);
		return pm;
	}

分享到:
评论

相关推荐

    html实现好看的多种风格导航菜单(源码)

    html实现好看的多种风格导航菜单(附源码),导航菜单,源码下载,分为顶部导航菜单,悬浮按钮菜单,右键功能菜单,左侧导航菜单四种导航菜单。每种导航菜单有至少三种风格,总共23种风格,各种风格都有,代码上手简单,...

    labview菜单响应设计

    菜单结构为: 系统(启动、退出)操作(升温、降温)、帮助 菜单行为如下: 1)当VI初始运行时,升温和降温两个菜单项处于无效(Disable)状态,当用户点击启动菜单项后,这两个菜单变为使能(Enable)状态,同时启动...

    微信小程序 圆形菜单 (源码)

    微信小程序 圆形菜单 (源码)微信小程序 圆形菜单 (源码)微信小程序 圆形菜单 (源码)微信小程序 圆形菜单 (源码)微信小程序 圆形菜单 (源码)微信小程序 圆形菜单 (源码)微信小程序 圆形菜单 (源码)微信小程序 圆形...

    12864实现菜单( 可以实现多级菜单,容易学习)

    12864 实现菜单在,单片机控制中作为人机交换中起了很大的作用,就像叫一个人用高科技的设备,但是复杂,但是做成菜单一样玩起来和手机没什么区别简单。很好用希望同志 笑纳咯 要看效果可以到我的博客看看: ///...

    VC++完美实现精美自绘菜单

    完美实现真彩自绘菜单 相当不错的源码 1、MFC框架调用的GetMenu()->MeasureItem()就相当于调用了CMenuEx::MeasureItem(),从而实现自绘菜单控件尺寸的测量。 2、MFC框架调用GetMenu()->DrawItem()就相当于调用了...

    微信小程序源码 圆形菜单(学习版)

    微信小程序源码 圆形菜单(学习版)微信小程序源码 圆形菜单(学习版)微信小程序源码 圆形菜单(学习版)微信小程序源码 圆形菜单(学习版)微信小程序源码 圆形菜单(学习版)微信小程序源码 圆形菜单(学习版)微信小程序源码...

    微信小程序 轮播图+菜单 (源码)

    微信小程序 轮播图+菜单 (源码)微信小程序 轮播图+菜单 (源码)微信小程序 轮播图+菜单 (源码)微信小程序 轮播图+菜单 (源码)微信小程序 轮播图+菜单 (源码)微信小程序 轮播图+菜单 (源码)微信小程序 轮播图+菜单 ...

    HTML竖排菜单制作

    HTML竖排菜单制作,美观的竖排菜单,制作竖排菜单时可能用得到

    菜单、后台、网页模板

    超酷的仿flash特效菜单 超漂亮的电子商务管理平台模板 橙色的CSS团购网站首页菜单模板 多风格多功能后台管理模板 淡蓝色的二级CSS导航菜单 非常大气个性的jquery下拉menu 非常大气适合QQ空间网站的CSS导航菜单...

    12864多级菜单.rar_12864菜单_51单片机菜单_51菜单_单片机菜单_菜单 51

    51单片机控制12864显示多级调试菜单

    51单片机lcd多级菜单.rar_51单片机显示_LCD多级菜单_lcd 菜单_单片机菜单_多级菜单

    51单片机液晶显示,菜单具备多级菜单,配合按键操作

    win10下_X4.X5.X6菜单.zip

    在Coreldraw 工具栏鼠标点击 右键----菜单----自定义----工作区----导入工作区---选择要导入的工作区文件 窗口,浏览-选择“win10_x4菜单.xslt”文件,例如选择工作区“WIN10下_x4.x5.x6菜单文件”文件夹下的“win10...

    st7565 驱动 + LCD多层菜单 V1.2.1

    名称:GXD LCD多层菜单 v1.2.1 作者:中国传惠 TranSmart gongxd@126.com 特点: 可以在液晶LCM上显示最大254层深度的菜单,可以非常方便的使用和移植。 字符型显示适用于St7920控制芯片。 图像显示适用于st7656控制...

    nt6启动菜单自动修复

    1、格式化或GHOST活动分区(C盘)重装系统后添加修复其它分区上的Vista/2008/Win7启动菜单 2、在Vista/2008/Win7上新装2000/xp/2003后添加修复原Vista/2008/Win7启动菜单 简化出先vista/2008/win7后装2000/xp/2003多...

    C# 向窗体的系统菜单添加菜单项

    C#向窗体的系统菜单添加菜单项C#向窗体的系统菜单添加菜单项C#向窗体的系统菜单添加菜单项C#向窗体的系统菜单添加菜单项

    Android实现上下文菜单、下拉菜单、选项菜单代码

    文档中包括Android实现上下文菜单、下拉菜单、选项菜单代码以及截图,亲测可用!!!

    JS实现360度旋转菜单.rar

    Js实现旋转导航菜单,r半径,dv偏移量,w图片宽度,x菜单横坐标,y菜单纵坐标,pn菜单图片数量,当图片旋转到圆的正面时,传入当前图片移动的横坐标,正弦值对应为负弧度,即图片旋转到圆的背面,传入当前图片移动的横...

    js 菜单js 菜单js 菜单js 菜单js 菜单

    js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js ...

    Office2007经典菜单EXCEL&PPT;(绿色版)

    Office2007经典菜单EXCEL&PPT;(绿色版) 此版本为绿色版(推荐只使用EXCEL和PPT,world有BUG.)解压以下文件到:office安装目录(如:"C:\Program Files\Microsoft Office\Office12\ADDINS" ExcelMenu.dll PowerPointMenu...

    jsp实现级联菜单 jsp实现级联菜单

    jsp实现级联菜单jsp实现级联菜单jsp实现级联菜单jsp实现级联菜单jsp实现级联菜单

Global site tag (gtag.js) - Google Analytics