JMenuBar,JMenu,JMenuItem的关系
2016-07-16 21:43
381 查看
在一个窗口中,我们经常需要给窗口添加菜单条。在 Java 中这一部分是由三个类实现的,它们是JMenuBar、JMenu和JMenuItem,分别对应菜单条、菜单和菜单项。
同时,可以给JMenuItem注册侦听器,但不能对JMenuBar,JMenu注册侦听器.
一、菜单条(JMenuBar)
JMenuBar 的构造方法是 JMenuBar(),相当简单。在构造之后,还要将它设置成窗口的菜单条,这里要用 setJMenuBar 方法:
JMenuBar TestJMenuBar=new JMenuBar();
TestFrame.setJMenuBar(TestJMenuBar);
需要说明的是,JMenuBar 类根据 JMenu 添加的顺序从左到右显示,并建立整数索引。
二、菜单(JMenu)
在添加完菜单条后,并不会显示任何菜单,所以还需要在菜单条中添加菜单。菜单 JMenu 类的构造方法有4种:
JMenu() 构造一个空菜单。 JMenu(Action a) 构造一个菜单,菜单属性由相应的动作来提供。 JMenu(String s) 用给定的标志构造一个菜单。 JMenu(String s,Boolean b) 用给定的标志构造一个菜单。如果布尔值为false,那么当释放鼠标按钮后,菜单项会消失;如果布尔值为true,那么当释放鼠标按钮后,菜单项仍将显示。这时的菜单称为
tearOff 菜单。
在构造完后,使用 JMenuBar 类的 add 方法添加到菜单条中。
三、菜单项(JmenuItem)
接下来的工作是往菜单中添加内容。 在菜单中可以添加不同的内容,可以是菜单项(JMenuItem),可以是一个子菜单,也可以是分隔符。
在构造完后,使用 JMenu 类的 add 方法添加到菜单中。
子菜单的添加是直接将一个子菜单添加到母菜单中,而分隔符的添加只需要将分隔符作为菜单项添加到菜单中。
JMenuBar要set,JMenu要add ,JMenu在new的时候直接指定名字。
同时,可以给JMenuItem注册侦听器,但不能对JMenuBar,JMenu注册侦听器.
一、菜单条(JMenuBar)
JMenuBar 的构造方法是 JMenuBar(),相当简单。在构造之后,还要将它设置成窗口的菜单条,这里要用 setJMenuBar 方法:
JMenuBar TestJMenuBar=new JMenuBar();
TestFrame.setJMenuBar(TestJMenuBar);
需要说明的是,JMenuBar 类根据 JMenu 添加的顺序从左到右显示,并建立整数索引。
二、菜单(JMenu)
在添加完菜单条后,并不会显示任何菜单,所以还需要在菜单条中添加菜单。菜单 JMenu 类的构造方法有4种:
JMenu() 构造一个空菜单。 JMenu(Action a) 构造一个菜单,菜单属性由相应的动作来提供。 JMenu(String s) 用给定的标志构造一个菜单。 JMenu(String s,Boolean b) 用给定的标志构造一个菜单。如果布尔值为false,那么当释放鼠标按钮后,菜单项会消失;如果布尔值为true,那么当释放鼠标按钮后,菜单项仍将显示。这时的菜单称为
tearOff 菜单。
在构造完后,使用 JMenuBar 类的 add 方法添加到菜单条中。
三、菜单项(JmenuItem)
接下来的工作是往菜单中添加内容。 在菜单中可以添加不同的内容,可以是菜单项(JMenuItem),可以是一个子菜单,也可以是分隔符。
在构造完后,使用 JMenu 类的 add 方法添加到菜单中。
子菜单的添加是直接将一个子菜单添加到母菜单中,而分隔符的添加只需要将分隔符作为菜单项添加到菜单中。
JMenuBar要set,JMenu要add ,JMenu在new的时候直接指定名字。
相关文章推荐
- Build Slic3r on Windows // 如何在Windows上编译Slic3r
- UE4中使用数据表(Data Table)
- require.js的用法
- Thinking in Java之break与continue的使用
- H5 required 改变错误提示oninvalid、oninput、onforminput
- HDU 2062 Subset sequence[排列组合]
- 【BZOJ-1670】Building the Moat护城河的挖掘 Graham扫描法 + 凸包
- VS2008 fatal error LNK1000: Internal error during IncrBuildImage 解决方案
- UE4入门与精通
- STL之三:deque用法详解
- Codeforces 591A Wizards' Duel
- UESTC 2016 Summer Training #6 Div.2(未完待续)
- UESTC 2016 Summer Training #6 Div.2
- Vue.js——60分钟browserify项目模板快速入门
- NSOperationQueue没有必要反复创建临时变量,可以使用一个强引用的NSOperationQueue
- Ajax技术种open参数中的true
- String StringBuffer StringBuilder的简单介绍
- UE4 射线打击静态物体造成破碎
- 【YMGJ 2】时间格式转换:Unable to convert MySQL date/time value to System.DateTime
- ARM交叉编译工具链的制作