Java详解菜单组件

Posted hdk2016

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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键的话,控制台就会打印消息了。

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

以上是关于Java详解菜单组件的主要内容,如果未能解决你的问题,请参考以下文章

使用导航从工具栏菜单项单击在片段之间传递数据 - Kotlin

Unity常用组件参数详解

Android - 具有多个底部导航菜单的导航组件

如何修复重叠的片段

如何访问活动内部/从活动中的片段视图组件

导航架构组件 - 导航抽屉