|
/* -------------------------------------------------------------------------- */ /* */ /* 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