• java 图形化小工具Abstract Window Toolit 菜单项


    AWT 中的菜单由如下几个类组合而成
    • MenuBar: 菜单条,菜单的容器。
    • Menu: 菜单组件,菜单项的容器,它也是Menultem的子类,所以可作为菜单项使用。
    • PopupMenu: 上下文菜单组件(右键菜单组件)。
    • MenuItem: 菜单项组件。
    • CheckboxMenuItem: 复选框菜单组件。
    • MenuShortcut: 菜单快捷键组件。
    AWT菜单的继承组合关系如下:
    菜单代码示例:
    • MenuBar 菜单栏
    • Menu 菜单名
    • MenuItem 菜单子项
    • popupMenu 右键菜单
    • e.consume();//结束事件传播。
    import java.awt.*;
    import java.awt.event.*;
    
    /**
     * @ClassName MenuTest
     * @projectName: object1
     * @author: Zhangmingda
     * @description: XXX
     * date: 2021/5/6.
     */
    public class MenuTest {
        public static void main(String[] args) {
            Frame frame = new Frame("记事本");
            //关闭按钮动作
            frame.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    System.out.println("窗口关闭");
                    System.exit(0);
                }
            });
            //文本框
            TextArea textArea = new TextArea(15,60);
            frame.add(textArea);
    
    
            //菜单栏
            MenuBar menuBar = new MenuBar();
            //菜单
            Menu fileMenu = new Menu("文件");
            Menu editMenu = new Menu("编辑");
    
            //监听点击事件
            ActionListener menuItemListener = e -> {
                String cmd = e.getActionCommand();
                System.out.println("点击了菜单:" + cmd);
                if (cmd.equals("退出")){
                    System.exit(0);
                }
            };
            //文件菜单项
            MenuItem newFileItem = new MenuItem("新建");
            MenuItem saveFileItem = new MenuItem("保存");
            MenuItem exitItem = new MenuItem("退出",new MenuShortcut(KeyEvent.VK_X)); //设置快捷键:new MenuShortcut(KeyEvent.VK_X)
            //添加监听点击事件
            newFileItem.addActionListener(menuItemListener);
            saveFileItem.addActionListener(menuItemListener);
            exitItem.addActionListener(menuItemListener);
            //文件菜单项组件组装
            fileMenu.add(newFileItem);
            fileMenu.add(saveFileItem);
            fileMenu.add(exitItem);
            //编辑菜单项
            MenuItem autoLen = new MenuItem("自动换行");
            MenuItem copyItem = new MenuItem("复制");
            MenuItem pasteItem = new MenuItem("粘贴");
            Menu formatMenu = new Menu("格式");
            MenuItem addNote = new MenuItem("注释");
            MenuItem cancleNote = new MenuItem("取消注释");
            formatMenu.add(addNote);formatMenu.add(cancleNote);
            //编辑菜单项组装
            editMenu.add(autoLen);
            editMenu.add(new MenuItem("-")); //分割线
            editMenu.add(copyItem);
            editMenu.add(pasteItem);
            editMenu.add(new MenuItem("-"));
            editMenu.add(formatMenu);
            //菜单栏,添加菜单
            menuBar.add(fileMenu);
            menuBar.add(editMenu);
            frame.setMenuBar(menuBar);
    
            //右键菜单
            PopupMenu popupMenu = new PopupMenu();
            popupMenu.add(new MenuItem("复制"));
            popupMenu.add(new MenuItem("粘贴"));
            frame.add(popupMenu); //当前窗口添加右键菜单窗口
    
            //文本框内鼠标松开,右键触发的动作
            textArea.addMouseListener(new MouseAdapter() {
                @Override
                public void mouseReleased(MouseEvent e) {
                    if (e.isPopupTrigger()){ //如果是右键点击后的松开动作
                        popupMenu.show(textArea,e.getX(),e.getY());
                        e.consume();//结束事件。阻止事件被其他监听器捕获:比如windows自带的右击弹窗动作
                    }
                }
            });
            frame.setLocation(400,300);
            frame.pack();
            frame.setVisible(true);
    
        }
    }

  • 相关阅读:
    模型绑定功能
    接口返回的内容
    跨平台的ASP.NET Core简介
    NLog如何打印日志(.Net5)
    注意力创造价值;
    Restful接口的介绍
    电脑设置双屏显示(windows)
    Linq多集合连接
    调试时才执行的代码
    mvc4 路由匹配测试
  • 原文地址:https://www.cnblogs.com/zhangmingda/p/14737152.html
Copyright © 2020-2023  润新知