启动类:
Main.java
public class Main
{ public static void main(String[] args)
{
// TODO Auto-generated method stub
MenuFrame test = new MenuFrame(); }}
大致在这个文件 的26行,我用注释标记了MenuFrame:
/**
 * 菜单测试
 * @author Administrator
 *
 */import java.awt.*;
import java.awt.event.*;
import java.awt.EventQueue;
import java.security.KeyStore;import javax.swing.*;public class MenuFrame extends JFrame
{
public MenuFrame()
{
//File 菜单
JMenu fileMenu = new JMenu("File");


fileMenu.add( new TestAction("New"));//新建

JMenuItem openItem = fileMenu.add( new TestAction("Open") );//打开

openItem.setAccelerator(KeyStore.getKeyStroke("ctrl O") );//就是这一行

fileMenu.addSeparator();//菜单分隔符

saveAction = new TestAction("Save");//保存
JMenuItem saveItem = fileMenu.add( saveAction );
//saveItem.setAccelerator(keyStroke.getKeyStroke("ctrl S"));

saveAsAction = new TestAction("Save As");
fileMenu.add( saveAsAction );
fileMenu.addSeparator();

fileMenu.add( new AbstractAction("Exit")
{ @Override
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
System.exit( 0 );

}

});


//Edit->Option
readonlyItem = new JCheckBoxMenuItem("Read-only");
readonlyItem.addActionListener( new ActionListener()
{ @Override
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
boolean saveOk = !readonlyItem.isSelected();
saveAction.setEnabled( saveOk );
saveAsAction.setEnabled( saveOk );

}

});

ButtonGroup group = new ButtonGroup();

JRadioButtonMenuItem insertItem = new JRadioButtonMenuItem("Insert");
insertItem.setSelected(true);
JRadioButtonMenuItem overtypeItem = new JRadioButtonMenuItem("Overtype");

group.add( insertItem );
group.add( overtypeItem );



//Edit和右键菜单的菜单项
Action cutAction = new TestAction("Cut");
Action copyAction = new TestAction("Copy");
Action pasteAction = new TestAction("Paste");

//Edit
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( indexItem );


//添加所有顶层菜单
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 );


panel.addMouseListener( new MouseAdapter()
{

});


//设置窗口样式
this.setTitle("菜单测试");
this.setLocation( 400, 300 );
this.setSize( 300, 200 );
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
private Action saveAction;
private Action saveAsAction;
private JCheckBoxMenuItem readonlyItem;
private JPopupMenu popup;

class TestAction extends AbstractAction
{
public TestAction( String name )
{
super( name );
} @Override
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
System.out.println(getValue(Action.NAME) + " selected.");

}

}
}