Java中的JMenuBar

	JMenuBar是用于制作菜单栏时用到的一个组件。将 JMenu 对象添加到菜单栏以构造菜单。当用户选择 JMenu 对象时,就会显示其关联的 JPopupMenu,允许用户选择其上的某一个 JMenuItem。
	菜单是非常重要的GUI组件,其界面提供的信息简明清晰,在用户界面中经常使用。Java的菜单组件是由多个类组成的,主要有:JMenuBar(菜单栏)、JMenu(菜单)、JMenuItem(菜单项)和JPopupMenu(弹出菜单)。

每个菜单组件都包含一个菜单栏,每个菜单栏又包含若干个菜单,每个菜单包含若干个
菜单项。菜单项的作用与按钮类似,当用户单击时产生一个命令动作。
Java 中的菜单分为两类:一类是下拉式菜单,通常所说的菜单就是这一类;另一类就是
弹出式菜单。
1.创建下拉式菜单
(1)创建菜单栏JMenuBar
菜单栏组件是一个水平菜单。它只能加入到一个框架中,并成为所有菜单树的根。在一
个时刻,一个框架可以显示一个菜单栏。然而,也可以根据程序的状态修改菜单栏,这样,
在不同的时刻就可以显示不同的菜单。例如:
JFrame f=new JFrame("菜单实例"); //创建框架
JMenuBar JMB=new JMenuBar(); //创建菜单栏JMB
f.setJMenuBar(JMB); //设置JMB 为框架f的菜单栏
菜单栏不支持监听者。作为普通菜单行为的一部分,在菜单栏的区域中发生的事件和普
通组件一样会被自动处理。
(2)创建菜单,添加到菜单栏中
菜单提供了一个基本的下拉式菜单。
(接上例):
JMenu m1=new JMenu("File"); //创建File 菜单m1
JMenu m2=new JMenu("Edit");
JMenu m3=new JMenu("Tool");
JMenu m4=new JMenu("Help");
JMB.add(m1);//将m1添加到JMB菜单栏上


JMB.add(m2);
JMB.add(m3);
JMB.add(m4);
(3)创建菜单项,加入到菜单中
菜单项是菜单树的“叶”节点。它们通常被加入到菜单中,以构成一个完整的菜单,例
如(接上例):
JMenuItem mi1=new JMenuItem("New"); //创建new菜单项目
mi1.setActionCommand("New"); //设置菜单项mil 的命令字符串为New
JMenuItem mi2=new JMenuItem("Load");
JMenuItem mi3=new JMenuItem("Save");
JMenuItem mi4=new JMenuItem("Quit");
m1.add(mi1); //把菜单项mi1 加入到菜单m1 中
m1.add(mi2);
m1.add(mi3);
m1.add(mi4);
(4)将建成的菜单栏添加到框架等容器中
例如,前面的例子中的f.setJMenuBar(JMB);,即设置JFrame 对象f的菜单栏为JMB。
(5)将菜单项注册给动作事件的监听者ActionListener
例如:MenuListener myListener=new MenuListener( ); //创建监听对象
mi1.addActionListener(myListener); //为菜单项添加监听对象
其中MenuListener 为实现ActionListener 接口的类,在该类中重载actionPerformed 方法,
例如:
class MenuListener implements ActionListener{
public void actionPerformed(ActionEvent e){
if (e.getActionCommand().equals("Quit"))
System.exit(0); //如果选择了Quit 菜单项,退出程序
}
}
(6)使用分隔线
如果希望在菜单项之间添加一条横向分隔线,以便将菜单项分成几组,则需要调用菜单
的方法addSeparator( )。例如:m1.addSeparator();。
(7)为菜单项定义访问键
除了可以单击鼠标选择菜单项外,还可以为每个菜单项定义一个键盘访问键,这样就可
以用键盘来选择菜单项了。访问键是一个字母,定义好了之后,按住Alt 键和该字母就可以
选择菜单中对应的菜单项。例如,mi1.setMnemonic(’F’);给mi1 菜单项设置了访问键F,当菜
单项在界面上可见时,可以在键盘上按下Alt 键不放,同时按F键运行对应的命令。
如果希望菜单还有子菜单,只需先建立带菜单项的菜单,再把该菜单像菜单项一样加入到另一个菜单即可。

在Java 菜单中定义了方钮确认框选项JcheckBoxMenuItem能够选中和不选中,圆形确认
框选项JradioButtonMenuItem能选中和不选中(一个选中,其他变为不选中,具有排他性),
它们的构造方法和JMenuItem类似,只是多了一个是否选中的参数。对应地,菜单项引发的
事件是ItemEvent,这样需要利用addItemListener方法把菜单项注册给ItemListener类的对象,
并实现ItemListener 的itemStateChanged(ItemEvent e)方法。我们可以通过ItemEvent 对象的
getStateChange( )方法获取菜单项的状态(2 表示从选中到未选中,1 表示从未选中到选中)。

你可能感兴趣的:(Java基础入门)