Menu
Basics
The Swing menu system is
supported by a group of related classes. The ones used in this chapter are
shown in Table 33-1, and they represent the core of the menu system. Although
they may seem a bit confusing at first, Swing menus are quite easy to use.
Swing allows a high degree of customization, if desired; however, you will
normally use the menu classes as-is because they support all of the most needed
options. For example, you can easily add images and keyboard shortcuts to a
menu.
Class :- Description
JMenuBar :- An object that
holds the top-level menu for the application.
JMenu :- A standard menu. A
menu consists of one or more JMenuItems.
JMenuItem :- An object that
populates menus.
JCheckBoxMenuItem :- A check
box menu item.
JRadioButtonMenuItem :- A
radio button menu item
JSeparator :- The visual
separator between menu items.
JPopupMenu :- A menu that is
typically activated by right-clicking the mouse.
Table
33-1 The Core Swing Menu Classes
Here is a brief overview of
how the classes fit together. To create the top-level menu for an application,
you first create a JMenuBar object.
This class is, loosely speaking, a container for menus. To the JMenuBar instance, you will add
instances of JMenu. Each JMenu object defines a menu. That is,
each JMenu object contains one or
more selectable items. The items
displayed by a JMenu are objects of JMenuItem. Thus, a JMenuItem defines a selection that can be chosen by the user.
As an alternative or adjunct
to menus that descend from the menu bar, you can also create stand-alone, popup
menus. To create a popup menu, first create an object of type JPopupMenu. Then, add JMenuItems to it. A popup menu is
normally activated by clicking the
right mouse button when the mouse is over a component for which a popup menu
has been defined.
In addition to “standard”
menu items, you can also include check boxes and radio buttons in a menu. A
check box menu item is created by JCheckBoxMenuItem.
A radio button menu item is created by JRadioButtonMenuItem.
Both of these classes extend JMenuItem.
They can be used in standard menus and popup menus.
JToolBar creates a stand-alone component that is related to the menu. It is
often used to provide fast access to
functionality contained within the menus of the application. For example, a
toolbar might provide fast access to the formatting commands supported by a
word processor.
JSeparator is a convenience class that creates a separator line in a menu.
One key point to understand
about Swing menus is that each menu item extends AbstractButton. Recall that
AbstractButton is also the superclass of all of Swing’s button components, such as JButton. Thus, all menu items are,
essentially, buttons. Obviously, they won’t actually look like buttons when
used in a menu, but they will, in many ways, act like buttons. For example,
selecting a menu item generates an action event in the same way that pressing a
button does.
Another key point is that JMenuItem is a superclass of JMenu. This allows the creation of
submenus, which are, essentially, menus within menus. To create a submenu, you
first create and populate a JMenu
object and then add it to another JMenu
object. You will see this process in action in the following section.
As mentioned in passing
previously, when a menu item is selected, an action event is generated. The
action command string associated with that action event will, by default, be
the name of the selection. Thus, you can determine which item was selected by
examining the action command. Of course, you can also use separate anonymous
inner classes or lambda expressions to handle each menu item’s action events.
In this case, the menu selection is already known, and there is no need to
examine the action command string to determine which item was selected.
Menus can also generate other
types of events. For example, each time that a menu is activated, selected, or
canceled, a MenuEvent is generated
that can be listened for via a
MenuListener. Other menu-related events include MenuKeyEvent,
MenuDragMouseEvent, and PopupMenuEvent. In many cases, however,
you need only watch for action events, and in this chapter, we will use only
action events.
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.