import java.awt.*;
import java.awt.event.*;
import javax.swing.JPopupMenu;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.ButtonGroup;
import javax.swing.JMenuBar;
import javax.swing.KeyStroke;
import javax.swing.ImageIcon;import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JFrame;
/**
* <p>Title: 菜單演示</p>
* <p>Description: 演示菜單的建立和快捷鍵的使用。</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Filename: MenuDemo.java</p>
* @version 1.0
*/public class MenuDemo implements ActionListener, ItemListener {
JTextArea output;
JScrollPane scrollPane;
String newline = "\n";
/**
*<br>方法說明:組建菜單欄
*<br>輸入參數:
*<br>返回類型:
*/
public JMenuBar createMenuBar() {
JMenuBar menuBar;
JMenu menu, submenu;
JMenuItem menuItem;
JRadioButtonMenuItem rbMenuItem;
JCheckBoxMenuItem cbMenuItem;//定義菜單條
menuBar = new JMenuBar();//定義第一個菜單
menu = new JMenu("(A)菜單");
menu.setMnemonic(KeyEvent.VK_A);
menuBar.add(menu);//下面開始定義菜單項
//只有文字
menuItem = new JMenuItem("(O)只有文本的菜單",
KeyEvent.VK_O);
//設置快捷鍵
menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_1, ActionEvent.ALT_MASK));
//添加監聽
menuItem.addActionListener(this);
menu.add(menuItem);
//有圖標還有文字
ImageIcon icon = createImageIcon("images/middle.gif");
menuItem = new JMenuItem("(B)有圖標和文字的菜單", icon);
menuItem.setMnemonic(KeyEvent.VK_B);
menuItem.addActionListener(this);
menu.add(menuItem);
//只有圖標
menuItem = new JMenuItem(icon);
menuItem.setMnemonic(KeyEvent.VK_D);
menuItem.addActionListener(this);
menu.add(menuItem);//定義一組radio button(單選按鈕)菜單
menu.addSeparator();
ButtonGroup group = new ButtonGroup();rbMenuItem = new JRadioButtonMenuItem("(R)使用radio的菜單");
rbMenuItem.setSelected(true);
rbMenuItem.setMnemonic(KeyEvent.VK_R);
group.add(rbMenuItem);
rbMenuItem.addActionListener(this);
menu.add(rbMenuItem);rbMenuItem = new JRadioButtonMenuItem("(d)另外一個radio菜單");
rbMenuItem.setMnemonic(KeyEvent.VK_D);
group.add(rbMenuItem);
rbMenuItem.addActionListener(this);
menu.add(rbMenuItem);//定義一組check box(檢查盒)菜單
menu.addSeparator();
cbMenuItem = new JCheckBoxMenuItem("(C)使用檢查盒的菜單");
cbMenuItem.setMnemonic(KeyEvent.VK_C);
cbMenuItem.addItemListener(this);
menu.add(cbMenuItem);cbMenuItem = new JCheckBoxMenuItem("(H)另外一個檢查盒");
cbMenuItem.setMnemonic(KeyEvent.VK_H);
cbMenuItem.addItemListener(this);
menu.add(cbMenuItem);//定義一個帶子菜單
menu.addSeparator();
submenu = new JMenu("(S)帶有子菜單");
submenu.setMnemonic(KeyEvent.VK_S);
//定義子菜單
menuItem = new JMenuItem("這是子菜單");
//定義快捷鍵
menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_2, ActionEvent.ALT_MASK));
menuItem.addActionListener(this);
submenu.add(menuItem);menuItem = new JMenuItem("子菜單項");
menuItem.addActionListener(this);
submenu.add(menuItem);
menu.add(submenu);//定義第二個菜單
menu = new JMenu("(N)第二個菜單");
menu.setMnemonic(KeyEvent.VK_N);
menuBar.add(menu);