在这篇文章中,笔者会介绍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() {@Overridepublic 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() {@Overridepublic 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键的话,控制台就会打印消息了。

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

转载于:https://www.cnblogs.com/HDK2016/p/8506882.html

【Java】详解菜单组件相关推荐

  1. java菜单如何点解_【Java】详解菜单组件

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

  2. java8编程开发入门 李兴华_李兴华系列--JAVA详解视频(jdk1.8)及项目实战教程

    李兴华系列--JAVA详解视频教程(jdk1.8)有源码+文档01_<Oracle从入门到精通> 02_<Java8编程入门> 03_<Java8面向对象编程> 0 ...

  3. Java详解剑指offer面试题50--第一个只出现一次的字符

    Java详解剑指offer面试题50–第一个只出现一次的字符 找出字符串中找出第一个只出现一次的字符,比如输入"abacceff",则输出'b' 要想知道某个字符是不是只出现了一次 ...

  4. storybook组件属性详解:组件props到strorybook Args

    首先我们查看官方文档:ArgsTable 官方的例子么有看到v-model如何处理,数组.对象等复杂属性定义. 这里一个是props的定义,一个是Controls 先看一下官方文档,Controls ...

  5. Java详解:淘宝秒杀脚本java

    造成雪崩的真实场景 1.4.1 服务提供者不可用 硬件故障:如网络故障.硬盘损坏等. 程序的 bug:如算法需要占用大量 CPU 的计算时间导致 CPU 使用率过高. 缓存击穿:比如应用刚重启,短时间 ...

  6. 逆向工程生成的Mapper.xml以及*Example.java详解

    逆向工程生成的接口中的方法详解 在我上一篇的博客中讲解了如何使用Mybayis逆向工程针对单表自动生成mapper.java.mapper.xml.实体类,今天我们先针对mapper.java接口中的 ...

  7. file java详解_Java中File的实例详解

    Java中File的实例详解 File 代表文件或者目录的类 构造函数 File(File parent,String child)---代表了指定父目录下的指定的子文件或者子目录 File(Stri ...

  8. Java详解去除字符串中空格的方法

    Java去除字符串中空格的方法详解 代码中字符串使用了replaceAll()方法,去除了所有空格(其中包括:首尾空格.中间空格) 遂整理下java关于字符串去除空格的方法. 1.方法分类 str.t ...

  9. websocket java详解_WebSocket详解

    WebSocket详解 WebSocket可提供一个在 单一TCP连接全双工双向通信协议.全双工意味着客户端和服务器可以独立发送信息给 对方.双向意味着客户端可以向服务器发送信息, 反之亦然. Web ...

最新文章

  1. Node.js的核心与红利
  2. Qt Creator用户界面
  3. gis怎么通过水库划分子流域_ArcGIS提取小流域——以北京为例,提取出密云水库...
  4. 怎么显示文件后缀名?很容易的几个步骤
  5. 如何全备份android固件,如何一键备份安卓手机操作系统
  6. 如何查看和修改Windows的主机名
  7. 计算某年新年是星期几的公式【不过这天怎么也该是假期吧?】
  8. GBase 8c 的安全特性
  9. QColor类的使用
  10. python报告的创新点_课题研究中的拟创新点是什么
  11. kubectl logs和docker logs输出日志不同的问题
  12. Error response from daemon: driver failed programming external connectivity on endpoint dz-redis
  13. AngularJs ng-repeat重复项异常解决方案
  14. 区块链安全100问 |​ 第五篇:黑客通过这些方法盗取数字资产,看看你是否中招?
  15. 什么是逆回购,央行为什么要实施逆回购?
  16. 。ThinkPad T60评测 彻底替代T43
  17. 51单片机学习:LED点阵实验(显示图像)
  18. 不想打工了,手头上仅有5万元,想回农村做养殖,能养什么?
  19. C++static_cast用法
  20. 程序员的奋斗史(四十二)——大学断代史(六)——我与图书馆

热门文章

  1. 不支持图形化界面的Linux系统如何显示图像化界面?飞腾服务器显示图像化界面方法,DISPLAY environment variable is undefined问题解决方法
  2. Mac 技术篇-查看python安装位置,查看java安装位置
  3. Windows 技术篇 - 电脑秒速关机设置方法,注册表修改3个缓冲等待时间
  4. CTFshow php特性 web138
  5. 第3周实践项目4 -顺序表的应用 删除顺序表中元素为x的值
  6. [YTU]_2613( 距离产生美)
  7. 3.1 matlab数据的输入和输出
  8. Struts2---入门
  9. 牛客网——华为机试(题17:坐标移动)(Java)
  10. centos 7 配置 到多站点设置