<import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* The MenuWindow class demonstrates a menu system.
*/
public class MenuWindow extends JFrame
{
private JLabel messageLabel; // To display a message
private JLabel results;// to display result
private final int LABEL_WIDTH = 400; // The label's width
private final int LABEL_HEIGHT = 200; // The label's height
// The following variables will reference menu components.
private JMenuBar menuBar; // The menu bar
private JMenu fileMenu; // The File menu
private JMenu textMenu; // The Text menu
private JMenu cellMenu; // The phone menu
private JMenu addMenu; // The add on menu
private JMenuItem exitItem; // An item to exit the application
private JRadioButtonMenuItem blackItem; // To make the text black
private JRadioButtonMenuItem redItem; // To make the text red
private JRadioButtonMenuItem blueItem; // To make the text blue
private JRadioButtonMenuItem blackItem1; // To make the text black
private JRadioButtonMenuItem redItem1; // To make the text red
private JRadioButtonMenuItem blueItem1; // To make the text blue
private JCheckBoxMenuItem voiceItem; // To toggle visibility
private JCheckBoxMenuItem textItem; // To toggle visibility
/**
* Constructor
*/
public MenuWindow()
{
// Call the JFrame constructor.
super("Cell Phone Package");
// Specify an action for the close button.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Create the message label and set its size and color.
messageLabel = new JLabel("Use the menu to " +
"select the best plan for you.",
SwingConstants.CENTER);
messageLabel.setPreferredSize(
new Dimension(LABEL_WIDTH, LABEL_HEIGHT));
messageLabel.setForeground(Color.BLACK);
// Add the label to the content pane.
add(messageLabel);
// Build the menu bar.
buildMenuBar();
// Pack and display the window.
pack();
setVisible(true);
}
/**
* The buildMenuBar method builds the menu bar.
*/
private void buildMenuBar()
{
// Create the menu bar.
menuBar = new JMenuBar();
// Create the file and text menus.
buildFileMenu();
buildTextMenu();
buildAddMenu();
buildCellMenu();
// Add the file and text menus to the menu bar.
menuBar.add(fileMenu);
menuBar.add(textMenu);
menuBar.add(addMenu);
menuBar.add(cellMenu);
// Set the window's menu bar.
setJMenuBar(menuBar);
}
/**
* The buildFileMenu method builds the File menu
* and returns a reference to its JMenu object.
*/
private void buildFileMenu()
{
// Create an Exit menu item.
exitItem = new JMenuItem("Exit");
exitItem.setMnemonic(KeyEvent.VK_X);
exitItem.addActionListener(new ExitListener());
// Create a JMenu object for the File menu.
fileMenu = new JMenu("File");
fileMenu.setMnemonic(KeyEvent.VK_F);
// Add the Exit menu item to the File menu.
fileMenu.add(exitItem);
}
/**
* The buildTextMenu method builds the Text menu
* and returns a reference to its JMenu object.
*/
private void buildTextMenu()
{
// Create the radio button menu items to change the color
// of the text. Add an action listener to each one.
blackItem = new JRadioButtonMenuItem("300 minutes:$45 per month", true);
blackItem.setMnemonic(KeyEvent.VK_B);
blackItem.addActionListener(new PlanListener());
redItem = new JRadioButtonMenuItem("800 minutes:$65 per month");
redItem.setMnemonic(KeyEvent.VK_R);
redItem.addActionListener(new PlanListener());
blueItem = new JRadioButtonMenuItem("1500 minutes:$99 per month");
blueItem.setMnemonic(KeyEvent.VK_U);
blueItem.addActionListener(new PlanListener());
// Create a button group for the radio button items.
ButtonGroup group = new ButtonGroup();
group.add(blackItem);
group.add(redItem);
group.add(blueItem);
// Create a JMenu object for the Text menu.
textMenu = new JMenu("Minutes");
textMenu.setMnemonic(KeyEvent.VK_T);
// Add the menu items to the Text menu.
textMenu.add(blackItem);
textMenu.add(redItem);
textMenu.add(blueItem);
}
private void buildAddMenu()
{
// Create the radio button menu items to change the color
// of the text. Add an action listener to each one.
blackItem1 = new JRadioButtonMenuItem("Model 100:$29.95", true);
blackItem1.setMnemonic(KeyEvent.VK_S);
blackItem1.addActionListener(new PlanListener());
redItem1 = new JRadioButtonMenuItem("Model 110:$49.95");
redItem1.setMnemonic(KeyEvent.VK_K);
redItem1.addActionListener(new PlanListener());
blueItem1 = new JRadioButtonMenuItem("Model 200:$99.95");
blueItem1.setMnemonic(KeyEvent.VK_P);
blueItem1.addActionListener(new PlanListener());
// Create a button group for the radio button items.
ButtonGroup group = new ButtonGroup();
group.add(blackItem1);
group.add(redItem1);
group.add(blueItem1);
// Create a JMenu object for the Text menu.
addMenu = new JMenu("Cell-Phone model");
textMenu.setMnemonic(KeyEvent.VK_Z);
// Add the menu items to the Text menu.
addMenu.add(blackItem1);
addMenu.add(redItem1);
addMenu.add(blueItem1);
}
private void buildCellMenu()
{
// Create a check box menu item to make the text
// visible or invisible.
voiceItem = new JCheckBoxMenuItem("Voice mail option", true);
voiceItem.setMnemonic(KeyEvent.VK_E);
voiceItem.addActionListener(new PlanListener());
// Create a check box menu item to make the text
// visible or invisible.
textItem = new JCheckBoxMenuItem("Text message option", true);
textItem.setMnemonic(KeyEvent.VK_F);
textItem.addActionListener(new PlanListener());
// Create a JMenu object for the Text menu.
cellMenu = new JMenu("Add ons");
cellMenu.setMnemonic(KeyEvent.VK_D);
// Add the menu items to the Text menu.
cellMenu.add(voiceItem);
cellMenu.add(textItem);
}
/**
* Private inner class that handles the event that
* is generated when the user selects Exit from
* the File menu.
*/
private class ExitListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
/**
* Private inner class that handles the event that
* is generated when the user selects a color from
* the Text menu.
*/
private class PlanListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
double plan1;
double package1;
double text;
double message;
double addOn;
double total;
// Determine which color was selected and
// act accordingly.
if (blackItem.isSelected()){
plan1=45;
else if (redItem.isSelected())
plan1=65;
else if (blueItem.isSelected())
plan1=99;
if (blackItem1.isSelected())
package1=29.95;
else if (redItem1.isSelected())
package1=49.95;
else if (blueItem1.isSelected())
package1=99.95;
if (voiceItem.isSelected())
message =5;
if(textItem.isSelected())
text=10;
addOn=message + text;
total= package1+(6/package1)*100+ plan1+ addOn;
}
}
/**
* The main method creates an instance of the MenuWindow
* class, which causes it to display its window.
*/
public static void main(String[] args)
{
new MenuWindow();
}
}>