Think of a menu as a way to arrange buttons. There are several types.
A menu bar can be added to the top of any top-level containers, eg, JFrame, JApplet, or JDialog. Note that a menu bar can not be added to JPanel.
Dropdown menus have three parts:
It is easy to see how menu items are buttons that appear when a menu appears. But the menu names in the menu bar are also buttons. When you press on these "buttons", they create a popup menu that you see as a dropdown menu.
The following program creates a simple menu. It doesn't do anything useful.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// File : menus/MenuDemo.java
// Purpose: Simple demo of building menus. main program.
// Author : Fred Swartz
// Date : 2000-04-26 (Rota), 2002-05-01 (Sicilia), 2005-02-08 (Pfalz)
import javax.swing.*;
/////////////////////////////////////////////////////////////////// MenuDemo
public class MenuDemo {
//================================================================= main
public static void main(String[] args) {
JFrame win = new JFrame("MenuDemo");
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//... Create the GUI component (JPanel), which
// also contains a method to create a menubar.
MenuDemoGUI content = new MenuDemoGUI();
win.setContentPane(content);
win.setJMenuBar(content.createMenubar());
win.pack();
win.setVisible(true);
}
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
// File : menus/MenuDemoGUI.java // Purpose: GUI for menu demo. Subclasses JPanel and defines a method // which generates menubar. // Author : Fred Swartz // Date : 2000-04-26 (Rota), 2002-05-01 (Sicilia), 2005-02-08 (Pfalz) import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; /////////////////////////////////////////////////////////////// MenuDemoGUI class MenuDemoGUI extends JPanel { JTextArea m_editArea = new JTextArea(20, 50); //... Menuitems are buttons, so should be instance variables // so they can be en-/disabled by various actions. JMenuItem m_openItem = new JMenuItem("Open"); // create new menu item JMenuItem m_quitItem = new JMenuItem("Quit"); // another menu item JMenuItem m_copyItem = new JMenuItem("Copy"); JMenuItem m_pasteItem= new JMenuItem("Paste"); //========================================================== constructor public MenuDemoGUI() { //... Add listeners to menu items m_openItem.addActionListener(new OpenAction()); m_quitItem.addActionListener(new QuitAction()); //... Copy and Paste don't have listeners yet, so disable them. m_copyItem.setEnabled(false); m_pasteItem.setEnabled(false); //... Add the single component. setLayout(new BorderLayout()); add(m_editArea, BorderLayout.CENTER); } //==================================================== createMenubar // It's common to write a method that produces the menubar. // There are two reasons for this. // First, it gives a little better organization to the program // and doesn't mix content pane and menu construction. // Second, it can be defined wherever you want, so that it can be // put in a JPanel subclass (as here), or elsewhere. JMenuBar createMenubar() { //... Menubar, menus, menu items. Use indentation to show structure. JMenuBar menubar = new JMenuBar(); // declare and create new menu bar JMenu fileMenu = new JMenu("File");// declare and create new menu menubar.add(fileMenu); // add the menu to the menubar fileMenu.add(m_openItem); // add the menu item to the menu fileMenu.addSeparator(); // add separator line to menu fileMenu.add(m_quitItem); JMenu editMenu = new JMenu("Edit"); menubar.add(editMenu); editMenu.add(m_copyItem); editMenu.add(m_pasteItem); return menubar; } ///////////////////////////////////////////////////////////// OpenAction class OpenAction implements ActionListener { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "Sorry, can't open anything"); } } ///////////////////////////////////////////////////////////// QuitAction class QuitAction implements ActionListener { public void actionPerformed(ActionEvent e) { System.exit(0); // terminate this program } } } |