• 【Java】详解菜单组件


    在这篇文章中,笔者会介绍Java图形界面编程中菜单组件的用法。关于菜单组件,因为java存在AWT编程和Swing编程,所以菜单组件也存在AWT菜单和Swing菜单。因为Swing组件使用的比较多,所以笔者的案例中都是运用Swing菜单中的类。

    在介绍Swing菜单之前,先看看AWT菜单组件的类关系图:

    Swing菜单组件与AWT菜单组件中的类结构类似。

    Swing菜单组件的用法在API中已经给出了,所以笔者在这里不必要列出。这里笔者要说一说,Swing菜单组件中的快捷键,下面笔者会详细介绍Swing中菜单的快捷键。

    public void setMnemonic(int mnemonic)

    这个方法可以设置键盘助记字符,不过该方法的使用是依赖Swing组件的菜单分层结构的,也就是说设置了该助记字符的菜单项目必须已经展开了,才能使用(通过和Alt+键结合使用),

    例如:

            JFrame jf=new JFrame("窗口测试");
            
            JMenuBar bar=new JMenuBar();
            JMenu file=new JMenu("菜单   ");
            JMenuItem createfile=new JMenuItem("创建文件   VK_N");
            
            createfile.setMnemonic(KeyEvent.VK_N);
            createfile.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent arg0) {
                    System.out.println("创建文件被点击");
                }
            });
            
            file.add(createfile);
            bar.add(file);
            
            jf.setJMenuBar(bar);
            jf.pack();
            jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            jf.setVisible(true);

    效果图为:

    如果在上面这种图片的效果下,摁下Ctr+N的话,控制台是不会打印东西的,只有把鼠标移到菜单上,看见“创建菜单”项后,使用Ctr+N控制台才会打印消息。

    值得注意的是 setMnemonic 并非是JMenuItem的方法,而是来着他的父类AbstractButton的,所以该方法通常是不应用于菜单项的。

    JMenuItem自身有一个方法 public void setAccelerator(KeyStroke keyStroke) 该方法的功能要比上面的那个方法要强大,该方法可以设置菜单项的快捷键,它是不依赖菜单的分层结构的。

    例如:

            JFrame jf=new JFrame("窗口测试");
            
            JMenuBar bar=new JMenuBar();
            JMenu file=new JMenu("菜单   ");
            JMenuItem createfile=new JMenuItem("创建文件");
            
            createfile.setAccelerator(KeyStroke.getKeyStroke('N', InputEvent.CTRL_DOWN_MASK));
            createfile.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent arg0) {
                    System.out.println("创建文件被点击");
                }
            });
            
            file.add(createfile);
            bar.add(file);
            
            jf.setJMenuBar(bar);
            jf.pack();
            jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            jf.setVisible(true);

    效果图:

    摁下Ctr+N键的话,控制台就会打印消息了。

    同时我们也可以看到,快捷键也被附加在文字的后面了。

  • 相关阅读:
    ES6的Iterator,jquery Fn
    html4,xhtml,html5发展历史
    浏览器Range,Selection等选中文本对象
    高效的插入子节点DocumentFragment
    Vue 性能优化track-by
    JS中先有Object还是先有Function?
    Unicode 与(UTF-8,UTF-16,UTF-32,UCS-2)
    FormData、Blob、File、ArrayBuffer数据类型
    jQuery 2.0.3 源码分析 事件绑定
    记录:springmvc + mybatis + maven 搭建配置流程
  • 原文地址:https://www.cnblogs.com/HDK2016/p/8506882.html
Copyright © 2020-2023  润新知