11.5 菜单
下拉式菜单,位于窗口部的菜单栏,包括下拉菜单的名字,点击一个名字就会打开包含菜单项和子菜单的菜单,当用户点击菜单项时,所有的菜单都会关闭,并将一条消息发送给程序
11.5.1菜单的构建
构建一个菜单非常容易的事情,首先要构建一个菜单来
var jMenuBar=new JMenuBar();
菜单栏是一个可以添加到任何位置的组件。正常情况下会放置在窗体的顶部。可以调用setMenuBar方法将菜单栏添加到这里:
frame.setMenuBar(jMenuBar);
需要为每个菜单创建一个菜单对象
var jMenu=new JMenu("Edit");
然后将菜单对象加入菜单栏
jMenuBar.add(jMenu);
向菜单对象加入菜单项,分隔符和子菜单
var pasteItem=new JMenuItem("Paste");
jMenu.add(pasteItem);//给菜单对象加菜单项
jMenu.addSeparator();//分隔符
var OptionsMenu=new JMenu("Options");
jMenu.add(OptionsMenu);//给菜单对象加一个菜单也就是子菜单
当用户选择菜单时,将触发一个动作事件。需要为每个菜单项安装一个动作监听器。
ActionListener actionListener=new ActionListener();
actionListener.addActionListener();
JMenu.add方法可以很方便的将菜单项增加到菜单的末尾
jMenu.add(pasteItem);//给菜单对象加菜单项
add方法返回创建的菜单项,可以获取这个菜单项,并添加监听器。
JMenuItem pasteItem=jMenu.add("paste");
pasteItem.addActionListener(listener);
要定义一个实现Action接口的类,为此通常会扩展便利的AbstractAction类,在AbstraAction对象的构造器中可以指定菜单标签,并且覆盖actionPerforomed方法来获得菜单动作处理器。
var exitAction=new AbstractAction("Exit")
{
public void actionPerformed(ActionEvent event)
{
System.exitt(0);
}