Java图形化界面---菜单项组件

目录

一、菜单项组件的介绍

二、实例

(1)基本菜单的搭建

 (2)PopupMenu菜单的使用


一、菜单项组件的介绍

对于菜单的概念我想应该不需要细说了,通俗地来说,菜单就是对我们做出选择的一些展示出来的。

菜单组件我们常用的如下:

菜单组件名称            功能
MenuBar               菜单条,菜单的容器
Menu                  菜单组件,菜单项的容器。他也是MenuItem的子类,所以可作为菜单项使用
MenuItem              菜单项组件
PopupMenu             上下文菜单组件(右键菜单组件)
CheckboxMenuItem      复选框菜单项组件

二、实例

(1)基本菜单的搭建

案列

需求:制作如图所示的界面,并给注释添加快捷键,同时点击注释在文本区域输出信息。

 

class Solution {
    //制造组件
    public static void main(String[] args){
       new Test().init();
    }

}



public class Test {
    //组件
    Frame s=new Frame("菜单练习");
    MenuBar menubar=new MenuBar();
    Menu wenjian=new Menu("文件");
    Menu bianji=new Menu("编辑");
    MenuItem zidong=new MenuItem("自动换行");
    MenuItem fuzhi=new MenuItem("复制");
    MenuItem zhantie=new MenuItem("粘贴");
    Menu geshi=new Menu("格式");
    //关联快捷键,ctrl+q+shift,true表示有shift
    MenuItem zhushi=new MenuItem("注释",new MenuShortcut(KeyEvent.VK_Q,true));
    MenuItem quxiao=new MenuItem("取消注释");
    TextArea area=new TextArea(6,40);
    public void init(){
        //组装组件
        zhushi.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                area.append("你正在点击"+e.getActionCommand()+"\n");
            }
        });
        geshi.add(zhushi);
        geshi.add(quxiao);
        bianji.add(zidong);
        bianji.add(fuzhi);
        bianji.add(zhantie);
        bianji.add(geshi);
        menubar.add(bianji);
        menubar.add(wenjian);
        s.setMenuBar(menubar);
        s.add(area);
        s.pack();
        s.setVisible(true);
    }

}

 (2)PopupMenu菜单的使用

案例:

需求:在下面panel容器中右键出现菜单,并且点击后在文本区域输出对应的信息

 

public class Test {
    //组件
    Frame s=new Frame("练习");
    TextArea area=new TextArea(10,40);
    Panel panel=new Panel();
    MenuItem zhushi=new MenuItem("注释");
    MenuItem quxiao=new MenuItem("取消注释");
    MenuItem fuzhi=new MenuItem(":复制");
    MenuItem save=new MenuItem("保存");
    PopupMenu popupMenu=new PopupMenu();


    public void init(){
        //组装组件
       ActionListener ac=new ActionListener() {
           @Override
           public void actionPerformed(ActionEvent e) {
               area.append("你当前点击的是:"+e.getActionCommand()+"\n");
           }
       };
       zhushi.addActionListener(ac);
       quxiao.addActionListener(ac);
       fuzhi.addActionListener(ac);
       save.addActionListener(ac);
       popupMenu.add(zhushi);
       popupMenu.add(quxiao);
       popupMenu.add(fuzhi);
       popupMenu.add(save);
       panel.add(popupMenu);
       panel.setSize(400,400);
       panel.addMouseListener(new MouseAdapter() {
           @Override
           public void mouseReleased(MouseEvent e) {
               if(e.isPopupTrigger()){
                   //返回值是true表示是右键点击
                   popupMenu.show(panel,e.getX(),e.getY());
               }
           }
       });
       Box b=Box.createVerticalBox();
       b.add(area);
       b.add(panel);
       s.add(b);
       s.pack();
       s.setVisible(true);
    }
}

class Solution {
    //制造组件
    public static void main(String[] args){
       new Test().init();
    }

}

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜到极致就是渣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值