|
/* -------------------------------------------------------------------------- */
/* */
/* 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
Figure 1: Result of exacuting code presented in Tables 1 and 2.
Created and maintained by Frans Coenen. Last updated 23 August 2005