菜单栏JMenuBar,菜单JMenu,菜单项JMenuItem
一旦A有子菜单项,则A为菜单JMenu,而不是菜单项JMenuItem
import javax.swing.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;public class Demo extends JFrame { public Demo(){ setTitle("菜单栏"); setBounds(100,100,200,200); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); JMenuBar menuBar=new JMenuBar();//菜单栏 setJMenuBar(menuBar);//设置为窗体的菜单栏//菜单1 JMenu menu=new JMenu("菜单(F)");//菜单 menuBar.add(menu); menu.setMnemonic(KeyEvent.VK_F);//快捷键Alt+F JMenuItem menuItem=new JMenuItem("菜单项(O)");//菜单项 menu.add(menuItem); menuItem.addActionListener(new ItemListener());//给菜单项添加动作监听 Icon icon=new ImageIcon("src/img.JPG");//菜单项的logo menuItem.setIcon(icon); menuItem.setMnemonic(KeyEvent.VK_O);//快捷键Alt+F打开菜单后,按O menu.addSeparator();//菜单项之后,添加分隔线 JMenu menu12=new JMenu("菜单12");//一旦有子类,则为菜单,而不是菜单项。 menu.add(menu12); JMenuItem menuItem121=new JMenuItem("菜单项121"); JMenuItem menuItem122=new JMenuItem("菜单项122"); menu12.add(menuItem121); menu12.add(menuItem122); menuItem121.addActionListener(new ItemListener());//给菜单项添加动作监听 menuItem122.addActionListener(new ItemListener());//给菜单项添加动作监听//菜单2 JMenu menu2=new JMenu("菜单2"); menuBar.add(menu2); } public static void main(String[] args) { Demo frame=new Demo(); frame.setVisible(true); } private class ItemListener implements ActionListener{ //自定义动作监听 public void actionPerformed(ActionEvent e) { JMenuItem menuItem=(JMenuItem) e.getSource();//获得触发此事件的菜单项 System.out.println("被单击的菜单项是:"+menuItem.getText());//获得文本 } }}