一、菜单条、菜单、菜单项是窗口的常用的组件,菜单项放在菜单里,菜单放在菜单条里。

1.菜单条

        JComponent类的子类JMenubar负责创建菜单条,即JMenubar的一个班实例就是一个菜单条,JFrame类有一个将菜单条放置到窗口中的方法:

        setJMenuBar(JMenuBar bar);    该方法将菜单条添加到窗口的顶端,需要注意的是,只能向窗口添加一个菜单条。

2.菜单

        JComponent类的子类JMenu负责创建菜单,即JMenu的一个实例就是一个菜单。

3.菜单项类的子类

        JComponent类的子类JMenuItem负责创建菜单项,即JMenuItem的一个实例就是一个菜单项。

4.嵌入子菜单

        JMenu是JMenuItem的子类,因此菜单本身也是一个菜单项,当把一个菜单看做菜单项添加到某个菜单中时,称这样的菜单为子菜单。

5.菜单上的图标

        为了使菜单项有一个图标,可以用图标类Icon声明一个图标,然后用子类ImageIcon类创建一个图标,如:Icon icon = new ImageIcon("a.gif");    然后调用setIcon(Icon icon)方法将图标设置为icon.

菜单条、菜单、菜单项简单案例程序:

//GUI:菜单条、菜单、菜单项
package test7;

import java.awt.event.KeyEvent;
import javax.swing.*;
import static javax.swing.JFrame.*;
import java.awt.*;
import java.awt.event.InputEvent;

class WindowMenu extends JFrame{
	JMenuBar menubar;	//定义菜单条
	JMenu menu,submenu;	//定义菜单
	JMenuItem item1,item2;	//定义菜单项
	
	public WindowMenu(){//无参构造方法
		
	}
	public WindowMenu(String s,int x,int y,int w,int h){//有参构造方法
		Init(s);	//初始化界面结构
		Container con = this.getContentPane(); //用getContentPane()方法获得JFrame的内容面板
		con.setBackground(Color.blue);	//设置窗口背景颜色为蓝色
		setLocation(x, y);	//设置窗口起始位置
		setSize(w, h);	//设置窗口的大小
		setVisible(true);	//设置窗口可见
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);	//隐藏当前窗口,并释放窗体的其他资源
	}
	public void Init(String s){//初始化界面结构方法
		menubar = new JMenuBar();	//创建菜单条
		setTitle(s);	//设置窗口标题
		menu = new JMenu("菜单");	//创建名为菜单的菜单
		submenu = new JMenu("软件项目");//创建名为软件项目的菜单
		//创建菜单项1,其中new ImageIcon()为创建一个图标
		item1 = new JMenuItem("Java话题",new ImageIcon("C:\\Users\\DELL\\Desktop\\照片\\a.jpg"));
		//item1 = new JMenuItem("Java话题");
		//创建菜单项2,其中new ImageIcon()为创建一个图标
		item2 = new JMenuItem("动画话题",new ImageIcon("C:\\Users\\DELL\\Desktop\\照片\\b.jpeg"));
		//item2 = new JMenuItem("动画话题");
		
		item1.setAccelerator(KeyStroke.getKeyStroke('A'));//设置在不导航菜单层次结构的情况下调用菜单项的动作侦听器的组合键。
		//返回一个KeyStroke的共享实例,给出一个数字键代码和一组修饰符。 返回的KeyStroke将对应一个按键。
		item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
		
		menu.add(item2);
		menu.add(submenu);
		submenu.add(new JMenuItem("汽车销售系统",new ImageIcon("C:\\Users\\DELL\\Desktop\\照片\\c.jpg")));
		//submenu.add(new JMenuItem("汽车销售系统"));
		submenu.add(new JMenuItem("农场信息系统",new ImageIcon("C:\\Users\\DELL\\Desktop\\照片\\d.jpeg")));
		//submenu.add(new JMenuItem("农场信息系统"));
		menubar.add(menu);//将菜单添加到此菜单条的末尾。 返回添加的菜单。
		setJMenuBar(menubar);//将菜单条放置到窗口
	}
}
public class Example6_3 {
	public static void main(String args[]) {
		WindowMenu win = new WindowMenu("带菜单的窗口",200,200,600,600);
//		Container con = win.getContentPane();
//		con.setBackground(Color.blue);
	}
	
}