package com.swing.demo; import java.awt.EventQueue; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import javax.swing.JCheckBoxMenuItem; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JRadioButtonMenuItem; import javax.swing.KeyStroke; /*** * 嵌套菜单测试【JRadioButtonMenuItem子菜单】 * * @author Administrator * */ public class MenuTest { public static void main(String[] args) { EventQueue.invokeLater(new Runnable(){ public void run() { MenuFrame frame = new MenuFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); } } class MenuFrame extends JFrame{ public MenuFrame (){ setTitle("MenuTest ."); setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT); JMenu fileMenu = new JMenu("File"); fileMenu.add(new TestAction("NEW")); JMenuItem openItem = fileMenu.add(new TestAction("Open")); openItem.setAccelerator(KeyStroke.getKeyStroke("ctrl o")); //分隔符 fileMenu.addSeparator(); saveAction = new TestAction("Save"); JMenuItem saveItem = fileMenu.add(saveAction); saveItem.setAccelerator(KeyStroke.getKeyStroke("ctrl s")); saveAction = new TestAction("Save As"); fileMenu.add(saveAction); fileMenu.addSeparator(); fileMenu.add(new AbstractAction(){ public void actionPerformed(ActionEvent e) { System.exit(0); } }); ButtonGroup group = new ButtonGroup(); JRadioButtonMenuItem insertItem = new JRadioButtonMenuItem("Insert"); insertItem.setSelected(true); JRadioButtonMenuItem overtypeItem = new JRadioButtonMenuItem("Overtype"); JRadioButtonMenuItem readonlyItem = new JRadioButtonMenuItem("readonly"); //将子菜单JRadioButtonMenuItem添加到group单选系列中 group.add(insertItem); group.add(overtypeItem); group.add(readonlyItem); Action cutAction = new TestAction("Cut"); cutAction.putValue(Action.SMALL_ICON,new ImageIcon("src/blue-ball.gif")); Action copyAction = new TestAction("Copy"); copyAction.putValue(Action.SMALL_ICON,new ImageIcon("src/blue-ball.gif")); Action pasteAction = new TestAction("Paste"); pasteAction.putValue(Action.SMALL_ICON, new ImageIcon("src/blue-ball.gif")); JMenu editMenu = new JMenu("Edit"); editMenu.add(cutAction); editMenu.add(copyAction); editMenu.add(pasteAction); JMenu optionMenu = new JMenu("Options"); optionMenu.add(readonlyItem); optionMenu.addSeparator(); optionMenu.add(insertItem); optionMenu.add(overtypeItem); editMenu.addSeparator(); editMenu.add(optionMenu); JMenu helpMenu = new JMenu("Help"); helpMenu.setMnemonic('H'); JMenuItem indexItem = new JMenuItem("Index"); indexItem.setMnemonic('I'); helpMenu.add(indexItem); Action aboutAction = new TestAction("About"); aboutAction.putValue(Action.MNEMONIC_KEY,new Integer('A')); helpMenu.add(aboutAction); JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); menuBar.add(fileMenu); menuBar.add(editMenu); menuBar.add(helpMenu); popup = new JPopupMenu(); popup.add(cutAction); popup.add(copyAction); popup.add(pasteAction); JPanel panel =new JPanel(); panel.setComponentPopupMenu(popup); add(panel); } private static final int DEFAULT_WIDTH = 300 ; private static final int DEFAULT_HEIGHT = 200; private Action saveAction; private Action saveAsActon; private JCheckBoxMenuItem readonlyItem; private JPopupMenu popup; } /*** * 继承一个抽象的监听类 * * @author Administrator * */ class TestAction extends AbstractAction{ public TestAction(String name) { super(name); } public void actionPerformed(ActionEvent e) { System.out.println(getValue(Action.NAME) + "select"); } }