菜单

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

[size=large]2 基于菜单条[/size]
说明:已创建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);
}
}

[size=large]3 弹出菜单[/size]
说明:在监听器中进行
(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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值