【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() {@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】详解菜单组件相关推荐
- java菜单如何点解_【Java】详解菜单组件
在这篇文章中,笔者会介绍Java图形界面编程中菜单组件的用法.关于菜单组件,因为java存在AWT编程和Swing编程,所以菜单组件也存在AWT菜单和Swing菜单.因为Swing组件使用的比较多,所 ...
- java8编程开发入门 李兴华_李兴华系列--JAVA详解视频(jdk1.8)及项目实战教程
李兴华系列--JAVA详解视频教程(jdk1.8)有源码+文档01_<Oracle从入门到精通> 02_<Java8编程入门> 03_<Java8面向对象编程> 0 ...
- Java详解剑指offer面试题50--第一个只出现一次的字符
Java详解剑指offer面试题50–第一个只出现一次的字符 找出字符串中找出第一个只出现一次的字符,比如输入"abacceff",则输出'b' 要想知道某个字符是不是只出现了一次 ...
- storybook组件属性详解:组件props到strorybook Args
首先我们查看官方文档:ArgsTable 官方的例子么有看到v-model如何处理,数组.对象等复杂属性定义. 这里一个是props的定义,一个是Controls 先看一下官方文档,Controls ...
- Java详解:淘宝秒杀脚本java
造成雪崩的真实场景 1.4.1 服务提供者不可用 硬件故障:如网络故障.硬盘损坏等. 程序的 bug:如算法需要占用大量 CPU 的计算时间导致 CPU 使用率过高. 缓存击穿:比如应用刚重启,短时间 ...
- 逆向工程生成的Mapper.xml以及*Example.java详解
逆向工程生成的接口中的方法详解 在我上一篇的博客中讲解了如何使用Mybayis逆向工程针对单表自动生成mapper.java.mapper.xml.实体类,今天我们先针对mapper.java接口中的 ...
- file java详解_Java中File的实例详解
Java中File的实例详解 File 代表文件或者目录的类 构造函数 File(File parent,String child)---代表了指定父目录下的指定的子文件或者子目录 File(Stri ...
- Java详解去除字符串中空格的方法
Java去除字符串中空格的方法详解 代码中字符串使用了replaceAll()方法,去除了所有空格(其中包括:首尾空格.中间空格) 遂整理下java关于字符串去除空格的方法. 1.方法分类 str.t ...
- websocket java详解_WebSocket详解
WebSocket详解 WebSocket可提供一个在 单一TCP连接全双工双向通信协议.全双工意味着客户端和服务器可以独立发送信息给 对方.双向意味着客户端可以向服务器发送信息, 反之亦然. Web ...
最新文章
- Node.js的核心与红利
- Qt Creator用户界面
- gis怎么通过水库划分子流域_ArcGIS提取小流域——以北京为例,提取出密云水库...
- 怎么显示文件后缀名?很容易的几个步骤
- 如何全备份android固件,如何一键备份安卓手机操作系统
- 如何查看和修改Windows的主机名
- 计算某年新年是星期几的公式【不过这天怎么也该是假期吧?】
- GBase 8c 的安全特性
- QColor类的使用
- python报告的创新点_课题研究中的拟创新点是什么
- kubectl logs和docker logs输出日志不同的问题
- Error response from daemon: driver failed programming external connectivity on endpoint dz-redis
- AngularJs ng-repeat重复项异常解决方案
- 区块链安全100问 |​ 第五篇:黑客通过这些方法盗取数字资产,看看你是否中招?
- 什么是逆回购,央行为什么要实施逆回购?
- 。ThinkPad T60评测 彻底替代T43
- 51单片机学习:LED点阵实验(显示图像)
- 不想打工了,手头上仅有5万元,想回农村做养殖,能养什么?
- C++static_cast用法
- 程序员的奋斗史(四十二)——大学断代史(六)——我与图书馆
热门文章
- 不支持图形化界面的Linux系统如何显示图像化界面?飞腾服务器显示图像化界面方法,DISPLAY environment variable is undefined问题解决方法
- Mac 技术篇-查看python安装位置,查看java安装位置
- Windows 技术篇 - 电脑秒速关机设置方法,注册表修改3个缓冲等待时间
- CTFshow php特性 web138
- 第3周实践项目4 -顺序表的应用 删除顺序表中元素为x的值
- [YTU]_2613( 距离产生美)
- 3.1 matlab数据的输入和输出
- Struts2---入门
- 牛客网——华为机试(题17:坐标移动)(Java)
- centos 7 配置 到多站点设置