JMenu EXAMPLE

August 2005

/* -------------------------------------------------------------------------- */
/*                                                                            */
/*                            MENU EXAMPLW FRAME                              */
/*                               Frans Coenen                                 */
/*                          Tuesday 23 August 2005                            */
/*                                                                            */
/*                                                                            */
/* -------------------------------------------------------------------------- */

/* Based on example given in: Deitel and Deitel(2005), "Java Hoe to Program", 
6th (International) Edition, Pearson/Prentice-Hall. */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MenuFrame extends JFrame implements ActionListener {

    /* ------ FIELDS ------ */
    
    // Menues
    
    /** File menu. */
    private JMenu fileMenu;
    private JMenu colourMenu;
    private JMenu formatMenu;

    // Other components
    
    /** Text Area. */
    private JTextArea textArea;
    /** Array of colour radio button menu items. */
    private JRadioButtonMenuItem colourItems[];
    /** Colours avialble for use with colour radio button menu items. */
    private String colours[]   = {"Blue","Red","Yellow"};
    /** Label for colours group of radio button menu items. */
    private ButtonGroup coloursButtonGroup;  
    
   /* --------------------------------------------------- */
    /*                                                     */
    /*                    CONSTRUCTORS                     */
    /*                                                     */
    /* --------------------------------------------------- */
    
    public MenuFrame() {
        super("JMenu Example");

	// Content pane
        Container container = getContentPane();
        //container.setBackground(Color.pink);
	
	// Create menus
	createFileMenu();
	createFormatMenu();
	
	// Create menu bar
	JMenuBar bar = new JMenuBar();
	setJMenuBar(bar);
	bar.add(fileMenu);
	bar.add(colourMenu);
	
	// Add text area	
	textArea = new JTextArea(40, 15);
	textArea.setEditable(false);
        container.add(new JScrollPane(textArea),BorderLayout.CENTER);
	}

    /* CREATE FILE MENU */
    
    /** Creates file menu */
	
    private void createFileMenu() {
        // Create file menu
	fileMenu = new JMenu("File");
	fileMenu.setMnemonic('F');
	
	// Create file menu items
	JMenuItem aboutItem = new JMenuItem("About ...");
	aboutItem.setMnemonic('A');
	aboutItem.setEnabled(true);
	aboutItem.addActionListener(this);
	JMenuItem exitItem = new JMenuItem("Exit");
	exitItem.setMnemonic('x');
	exitItem.setEnabled(true);
	exitItem.addActionListener(this);
	
	// Add to menu
	fileMenu.add(aboutItem);
	fileMenu.addSeparator();
	fileMenu.add(exitItem);
	}

    /* CREATE COLOUR MENU */
    
    /** Creates colour menu comprising radio menu buttons. */
	
    private void createColourMenu() {
        // Create colour menu
	colourMenu = new JMenu("Colour");
	fileMenu.setMnemonic('C');
        
	// Create colour menu radio button items
	colourItems        = new JRadioButtonMenuItem[colours.length];
	coloursButtonGroup = new ButtonGroup();
	for (int index=0;index < colours.length;index++) {
	    colourItems[index] = new JRadioButtonMenuItem(colours[index]);
	    colourItems[index].addActionListener(this);
	    colourMenu.add(colourItems[index]);
	    coloursButtonGroup.add(colourItems[index]);
	    }
	    
	// Select first colour button
	colourItems[0].setSelected(true);
	}
	

    /* CREATE FORMAT MENU */
    
    /** Creates format menu */
	
    private void createFormatMenu() {
        // Create file menu
	formatMenu = new JMenu("Format");
	formatMenu.setMnemonic('r');
	
	// Create file menu items
	createColourMenu();
	
	// Add items to menu
	formatMenu.add(colourMenu);
	}
    
    /* ------ METHODS ------ */
    
    /* ATION PERFORMED */
    
    /** Item handlers.
    @param event the triggered event. */
    
    public void actionPerformed(ActionEvent event) {
        if (event.getActionCommand().equals("About ...")) about();
	else if (event.getActionCommand().equals("Exit")) exitSystem();
	else if (event.getActionCommand().equals("Blue")) changeColour("Blue");
	else if (event.getActionCommand().equals("Red")) changeColour("Red");
	else if (event.getActionCommand().equals("Yellow")) 
							changeColour("Yellow");
	else JOptionPane.showMessageDialog(this,"Error in event handler",
			                  "Error: ",JOptionPane.ERROR_MESSAGE);
	}
	 
    /* ABOUT */
    
    /** Outputs JOption pane if about menu item selected. */
    
    private void about() {   
	textArea.append("Code example illustrating use of JMenus\n");
	}
    
    /* EXIT */
    
    /** Exits system */
    
    private void exitSystem() {
        System.exit(0);
	}
	
    /* CHANGE COLOUR */
    
    /** Changes colour */
    
    private void changeColour(String newColour) {    
	textArea.append("Change colour to " + newColour+ "\n");
	}
    }

Table 1: JMenu example

/* -------------------------------------------------------------------------- */
/*                                                                            */
/*                         MENU EXAMPLE APPLICATION 1                         */
/*                               Frans Coenen                                 */
/*                          Tuesday 23 August 2005                            */
/*                                                                            */
/* -------------------------------------------------------------------------- */

import javax.swing.JFrame;

public class MenuExampleApp1 {

    /* ------ FIELDS ------ */
    
    // No fields
    
    /* ------ METHODS ------ */

    /** Main method (to start the "ball rolling"). */

    public static void main(String Args[]) {
        // Creat menu frame
        MenuFrame menuFrame = new MenuFrame();
	menuFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
	// Set frame size
	menuFrame.setSize(500,200);
	
	// Display frame
	menuFrame.setVisible(true);
	}
    }

Table 2: associated application class

COLOUR CHOOSER GUI

Figure 1: Result of exacuting code presented in Tables 1 and 2.




Created and maintained by Frans Coenen. Last updated 23 August 2005