菜单栏的的创建->菜单栏放置到窗体-> 菜单的创建->菜单添加到菜单栏-> 菜单项的创建->菜单项添加到菜单
涉及如下三个类:
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
JMenu是JMenuItem的子类。所以菜单可以作为菜单项放置在一个菜单下,构成二级菜单。
菜单创建演示如下:
/*
* 菜单的创建过程
*/
//创建菜单栏
JMenuBar bar=new JMenuBar();
//放置菜单栏
this.setJMenuBar(bar);
//创建菜单
JMenu fileMenu=new JMenu("文件");
JMenu modeMenu=new JMenu("模式");
//放置菜单
bar.add(fileMenu);
bar.add(modeMenu);
//--------------------------------------------
//创建菜单项for file
JMenuItem fileItem1=new JMenuItem("打开文件");
JMenuItem fileItem2=new JMenuItem("保存文件");
JMenuItem fileItem3=new JMenuItem("关闭文件");
//创建菜单项for mode
JMenu modeItem=new JMenu("选择");
//-------------------------------------------
//放置菜单项
fileMenu.add(fileItem1);
fileMenu.addSeparator();
fileMenu.add(fileItem2);
fileMenu.add(fileItem3);
//放置菜单项for mode
modeMenu.add(modeItem);
//-------------------------------------------
//创建单选按钮
JRadioButtonMenuItem radioButton1=new JRadioButtonMenuItem("模式1");
JRadioButtonMenuItem radioButton2=new JRadioButtonMenuItem("模式2");
//放置单选按钮
modeItem.add(radioButton1);
modeItem.add(radioButton2);
ButtonGroup radioGroup=new ButtonGroup();
radioGroup.add(radioButton2);
radioGroup.add(radioButton1);
因为每添加一个菜单项就要添加两行代码,所以写一个方法替代这个过程,实现代码如下:
//放置菜单
bar.add(this.makeMenu(fileMenu, new String[]{"新建","打开文件",null,"保存文件","关闭文件"}));
bar.add(this.makeMenu(modeMenu, new String[]{"改变",null,null,null}));
}
/*
* 优化的菜单项创建方法
*/
public JMenu makeMenu(JMenu m,String[] items){
for(int i=0;i