Java中菜单分为常规式菜单和弹出式菜单。
1.常规式菜单:由菜单栏(JMenuBar)、下拉菜单项(JMenu)和命令菜单项(JMenuItem、JCheckBoxMenuItem、JRadioButtonMenuItem)组成,他们在swing中层次关系如下图:
菜单栏JMenuBar仅拥有setJMenuBar成员函数的容器能设置,如JFrame、Japplet。通过JMenuBar的add方法想菜单栏中添加菜单项。
可以通过JMenu的add方法添加命令菜单项,通过insertSeparator方法添加分隔条。
菜单项都有拥有setMnemonic成员方法设置助记符(按住alt和助记符激活下拉菜单项),命令菜单项还拥有成员方法setAccelerator(KeyStroke keyStroke)设置快捷键。KeyStroke对象可以由其静态成员方法getKeyStroke(String s)获取,字符串s有修饰词和按键两部分组成,修饰词为一下任意一个单词:
shift control ctrl meta alt altGraph。
JMenuItem、JCheckBoxMenuItem、JRadioButtonMenuItem的事件处理分别和JButton、JCheckBox、JRadioButton对应。
2.弹出式菜单:JPopupMenu,通过成员方法public JMenuItem add(JMenuItem menuItem)添加菜单项。通过MouseAdapter或MouseListener监听鼠标事件,调用JPopupMenu的show成员函数显示弹出式菜单,但是调用前要利用MouseEvent成员方法public boolean isPopupTrigger()函数判断鼠标事件是否用来触发弹出式菜单事件。