public class

JPopupMenu

extends JComponent
implements Accessible MenuElement
java.lang.Object
   ↳ java.awt.Component
     ↳ java.awt.Container
       ↳ javax.swing.JComponent
         ↳ javax.swing.JPopupMenu
Known Direct Subclasses
Known Indirect Subclasses

Class Overview

An implementation of a popup menu -- a small window that pops up and displays a series of choices. A JPopupMenu is used for the menu that appears when the user selects an item on the menu bar. It is also used for "pull-right" menu that appears when the selects a menu item that activates it. Finally, a JPopupMenu can also be used anywhere else you want a menu to appear. For example, when the user right-clicks in a specified area.

For information and examples of using popup menus, see How to Use Menus in The Java Tutorial.

Warning: Swing is not thread safe. For more information see Swing's Threading Policy.

Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeansTM has been added to the java.beans package. Please see XMLEncoder.

Summary

Nested Classes
class JPopupMenu.AccessibleJPopupMenu This class implements accessibility support for the JPopupMenu class. 
class JPopupMenu.Separator A popup menu-specific separator. 
[Expand]
Inherited Constants
From class javax.swing.JComponent
From class java.awt.Component
From interface java.awt.image.ImageObserver
[Expand]
Inherited Fields
From class javax.swing.JComponent
Public Constructors
JPopupMenu()
Constructs a JPopupMenu without an "invoker".
JPopupMenu(String label)
Constructs a JPopupMenu with the specified title.
Public Methods
JMenuItem add(JMenuItem menuItem)
Appends the specified menu item to the end of this menu.
JMenuItem add(Action a)
Appends a new menu item to the end of the menu which dispatches the specified Action object.
JMenuItem add(String s)
Creates a new menu item with the specified text and appends it to the end of this menu.
void addMenuKeyListener(MenuKeyListener l)
Adds a MenuKeyListener to the popup menu.
void addPopupMenuListener(PopupMenuListener l)
Adds a PopupMenu listener.
void addSeparator()
Appends a new separator at the end of the menu.
AccessibleContext getAccessibleContext()
Gets the AccessibleContext associated with this JPopupMenu.
Component getComponent()
Returns this JPopupMenu component.
Component getComponentAtIndex(int i)
This method is deprecated. replaced by getComponent(int)
int getComponentIndex(Component c)
Returns the index of the specified component.
static boolean getDefaultLightWeightPopupEnabled()
Gets the defaultLightWeightPopupEnabled property, which by default is true.
Component getInvoker()
Returns the component which is the 'invoker' of this popup menu.
String getLabel()
Returns the popup menu's label
Insets getMargin()
Returns the margin, in pixels, between the popup menu's border and its containees.
MenuKeyListener[] getMenuKeyListeners()
Returns an array of all the MenuKeyListeners added to this JPopupMenu with addMenuKeyListener().
PopupMenuListener[] getPopupMenuListeners()
Returns an array of all the PopupMenuListeners added to this JMenuItem with addPopupMenuListener().
SingleSelectionModel getSelectionModel()
Returns the model object that handles single selections.
MenuElement[] getSubElements()
Returns an array of MenuElements containing the submenu for this menu component.
PopupMenuUI getUI()
Returns the look and feel (L&F) object that renders this component.
String getUIClassID()
Returns the name of the L&F class that renders this component.
void insert(Action a, int index)
Inserts a menu item for the specified Action object at a given position.
void insert(Component component, int index)
Inserts the specified component into the menu at a given position.
boolean isBorderPainted()
Checks whether the border should be painted.
boolean isLightWeightPopupEnabled()
Gets the lightWeightPopupEnabled property.
boolean isPopupTrigger(MouseEvent e)
Returns true if the MouseEvent is considered a popup trigger by the JPopupMenu's currently installed UI.
boolean isVisible()
Returns true if the popup menu is visible (currently being displayed).
void menuSelectionChanged(boolean isIncluded)
Messaged when the menubar selection changes to activate or deactivate this menu.
void pack()
Lays out the container so that it uses the minimum space needed to display its contents.
void processKeyEvent(KeyEvent e, MenuElement[] path, MenuSelectionManager manager)
Processes a key event forwarded from the MenuSelectionManager and changes the menu selection, if necessary, by using MenuSelectionManager's API.
void processMouseEvent(MouseEvent event, MenuElement[] path, MenuSelectionManager manager)
This method is required to conform to the MenuElement interface, but it not implemented.
void remove(int pos)
Removes the component at the specified index from this popup menu.
void removeMenuKeyListener(MenuKeyListener l)
Removes a MenuKeyListener from the popup menu.
void removePopupMenuListener(PopupMenuListener l)
Removes a PopupMenu listener.
void setBorderPainted(boolean b)
Sets whether the border should be painted.
static void setDefaultLightWeightPopupEnabled(boolean aFlag)
Sets the default value of the lightWeightPopupEnabled property.
void setInvoker(Component invoker)
Sets the invoker of this popup menu -- the component in which the popup menu menu is to be displayed.
void setLabel(String label)
Sets the popup menu's label.
void setLightWeightPopupEnabled(boolean aFlag)
Sets the value of the lightWeightPopupEnabled property, which by default is true.
void setLocation(int x, int y)
Sets the location of the upper left corner of the popup menu using x, y coordinates.
void setPopupSize(Dimension d)
Sets the size of the Popup window using a Dimension object.
void setPopupSize(int width, int height)
Sets the size of the Popup window to the specified width and height.
void setSelected(Component sel)
Sets the currently selected component, This will result in a change to the selection model.
void setSelectionModel(SingleSelectionModel model)
Sets the model object to handle single selections.
void setUI(PopupMenuUI ui)
Sets the L&F object that renders this component.
void setVisible(boolean b)
Sets the visibility of the popup menu.
void show(Component invoker, int x, int y)
Displays the popup menu at the position x,y in the coordinate space of the component invoker.
void updateUI()
Resets the UI property to a value from the current look and feel.
Protected Methods
PropertyChangeListener createActionChangeListener(JMenuItem b)
Returns a properly configured PropertyChangeListener which updates the control as changes to the Action occur.
JMenuItem createActionComponent(Action a)
Factory method which creates the JMenuItem for Actions added to the JPopupMenu.
void firePopupMenuCanceled()
Notifies PopupMenuListeners that this popup menu is cancelled.
void firePopupMenuWillBecomeInvisible()
Notifies PopupMenuListeners that this popup menu will become invisible.
void firePopupMenuWillBecomeVisible()
Notifies PopupMenuListeners that this popup menu will become visible.
void paintBorder(Graphics g)
Paints the popup menu's border if the borderPainted property is true.
String paramString()
Returns a string representation of this JPopupMenu.
void processFocusEvent(FocusEvent evt)
Processes focus events occurring on this component by dispatching them to any registered FocusListener objects.
void processKeyEvent(KeyEvent evt)
Processes key stroke events such as mnemonics and accelerators.
[Expand]
Inherited Methods
From class javax.swing.JComponent
From class java.awt.Container
From class java.awt.Component
From class java.lang.Object
From interface java.awt.MenuContainer
From interface java.awt.image.ImageObserver
From interface javax.accessibility.Accessible
From interface javax.swing.MenuElement

Public Constructors

public JPopupMenu ()

Constructs a JPopupMenu without an "invoker".

public JPopupMenu (String label)

Constructs a JPopupMenu with the specified title.

Parameters
label the string that a UI may use to display as a title for the popup menu.

Public Methods

public JMenuItem add (JMenuItem menuItem)

Appends the specified menu item to the end of this menu.

Parameters
menuItem the JMenuItem to add
Returns
  • the JMenuItem added

public JMenuItem add (Action a)

Appends a new menu item to the end of the menu which dispatches the specified Action object.

Parameters
a the Action to add to the menu
Returns
  • the new menu item
See Also

public JMenuItem add (String s)

Creates a new menu item with the specified text and appends it to the end of this menu.

Parameters
s the string for the menu item to be added

public void addMenuKeyListener (MenuKeyListener l)

Adds a MenuKeyListener to the popup menu.

Parameters
l the MenuKeyListener to be added

public void addPopupMenuListener (PopupMenuListener l)

Adds a PopupMenu listener.

Parameters
l the PopupMenuListener to add

public void addSeparator ()

Appends a new separator at the end of the menu.

public AccessibleContext getAccessibleContext ()

Gets the AccessibleContext associated with this JPopupMenu. For JPopupMenus, the AccessibleContext takes the form of an AccessibleJPopupMenu. A new AccessibleJPopupMenu instance is created if necessary.

Returns
  • an AccessibleJPopupMenu that serves as the AccessibleContext of this JPopupMenu

public Component getComponent ()

Returns this JPopupMenu component.

Returns
  • this JPopupMenu object
See Also

public Component getComponentAtIndex (int i)

This method is deprecated.
replaced by getComponent(int)

Returns the component at the specified index.

Parameters
i the index of the component, where 0 is the first
Returns
  • the Component at that index

public int getComponentIndex (Component c)

Returns the index of the specified component.

Parameters
c the Component to find
Returns
  • the index of the component, where 0 is the first; or -1 if the component is not found

public static boolean getDefaultLightWeightPopupEnabled ()

Gets the defaultLightWeightPopupEnabled property, which by default is true.

Returns
  • the value of the defaultLightWeightPopupEnabled property

public Component getInvoker ()

Returns the component which is the 'invoker' of this popup menu.

Returns
  • the Component in which the popup menu is displayed

public String getLabel ()

Returns the popup menu's label

Returns
  • a string containing the popup menu's label
See Also

public Insets getMargin ()

Returns the margin, in pixels, between the popup menu's border and its containees.

Returns
  • an Insets object containing the margin values.

public MenuKeyListener[] getMenuKeyListeners ()

Returns an array of all the MenuKeyListeners added to this JPopupMenu with addMenuKeyListener().

Returns
  • all of the MenuKeyListeners added or an empty array if no listeners have been added

public PopupMenuListener[] getPopupMenuListeners ()

Returns an array of all the PopupMenuListeners added to this JMenuItem with addPopupMenuListener().

Returns
  • all of the PopupMenuListeners added or an empty array if no listeners have been added

public SingleSelectionModel getSelectionModel ()

Returns the model object that handles single selections.

Returns
  • the selectionModel property

public MenuElement[] getSubElements ()

Returns an array of MenuElements containing the submenu for this menu component. It will only return items conforming to the JMenuElement interface. If popup menu is null returns an empty array. This method is required to conform to the MenuElement interface.

Returns
  • an array of MenuElement objects
See Also

public PopupMenuUI getUI ()

Returns the look and feel (L&F) object that renders this component.

Returns
  • the PopupMenuUI object that renders this component

public String getUIClassID ()

Returns the name of the L&F class that renders this component.

Returns
  • the string "PopupMenuUI"

public void insert (Action a, int index)

Inserts a menu item for the specified Action object at a given position.

Parameters
a the Action object to insert
index specifies the position at which to insert the Action, where 0 is the first
Throws
IllegalArgumentException if index < 0
See Also

public void insert (Component component, int index)

Inserts the specified component into the menu at a given position.

Parameters
component the Component to insert
index specifies the position at which to insert the component, where 0 is the first
Throws
IllegalArgumentException if index < 0

public boolean isBorderPainted ()

Checks whether the border should be painted.

Returns
  • true if the border is painted, false otherwise

public boolean isLightWeightPopupEnabled ()

Gets the lightWeightPopupEnabled property.

Returns
  • the value of the lightWeightPopupEnabled property

public boolean isPopupTrigger (MouseEvent e)

Returns true if the MouseEvent is considered a popup trigger by the JPopupMenu's currently installed UI.

Returns
  • true if the mouse event is a popup trigger

public boolean isVisible ()

Returns true if the popup menu is visible (currently being displayed).

Returns
  • true if the component is visible, false otherwise

public void menuSelectionChanged (boolean isIncluded)

Messaged when the menubar selection changes to activate or deactivate this menu. This implements the javax.swing.MenuElement interface. Overrides MenuElement.menuSelectionChanged.

Parameters
isIncluded true if this menu is active, false if it is not

public void pack ()

Lays out the container so that it uses the minimum space needed to display its contents.

public void processKeyEvent (KeyEvent e, MenuElement[] path, MenuSelectionManager manager)

Processes a key event forwarded from the MenuSelectionManager and changes the menu selection, if necessary, by using MenuSelectionManager's API.

Note: you do not have to forward the event to sub-components. This is done automatically by the MenuSelectionManager.

Parameters
e a KeyEvent
path the MenuElement path array
manager the MenuSelectionManager

public void processMouseEvent (MouseEvent event, MenuElement[] path, MenuSelectionManager manager)

This method is required to conform to the MenuElement interface, but it not implemented.

public void remove (int pos)

Removes the component at the specified index from this popup menu.

Parameters
pos the position of the item to be removed
Throws
IllegalArgumentException if the value of pos < 0, or if the value of pos is greater than the number of items

public void removeMenuKeyListener (MenuKeyListener l)

Removes a MenuKeyListener from the popup menu.

Parameters
l the MenuKeyListener to be removed

public void removePopupMenuListener (PopupMenuListener l)

Removes a PopupMenu listener.

Parameters
l the PopupMenuListener to remove

public void setBorderPainted (boolean b)

Sets whether the border should be painted.

Parameters
b if true, the border is painted.

public static void setDefaultLightWeightPopupEnabled (boolean aFlag)

Sets the default value of the lightWeightPopupEnabled property.

Parameters
aFlag true if popups can be lightweight, otherwise false

public void setInvoker (Component invoker)

Sets the invoker of this popup menu -- the component in which the popup menu menu is to be displayed.

Parameters
invoker the Component in which the popup menu is displayed

public void setLabel (String label)

Sets the popup menu's label. Different look and feels may choose to display or not display this.

Parameters
label a string specifying the label for the popup menu
See Also

public void setLightWeightPopupEnabled (boolean aFlag)

Sets the value of the lightWeightPopupEnabled property, which by default is true. By default, when a look and feel displays a popup, it can choose to use a lightweight (all-Java) popup. Lightweight popup windows are more efficient than heavyweight (native peer) windows, but lightweight and heavyweight components do not mix well in a GUI. If your application mixes lightweight and heavyweight components, you should disable lightweight popups. Some look and feels might always use heavyweight popups, no matter what the value of this property.

Parameters
aFlag false to disable lightweight popups

public void setLocation (int x, int y)

Sets the location of the upper left corner of the popup menu using x, y coordinates.

Parameters
x the x coordinate of the popup's new position in the screen's coordinate space
y the y coordinate of the popup's new position in the screen's coordinate space

public void setPopupSize (Dimension d)

Sets the size of the Popup window using a Dimension object. This is equivalent to setPreferredSize(d).

Parameters
d the Dimension specifying the new size of this component.

public void setPopupSize (int width, int height)

Sets the size of the Popup window to the specified width and height. This is equivalent to setPreferredSize(new Dimension(width, height)).

Parameters
width the new width of the Popup in pixels
height the new height of the Popup in pixels

public void setSelected (Component sel)

Sets the currently selected component, This will result in a change to the selection model.

Parameters
sel the Component to select

public void setSelectionModel (SingleSelectionModel model)

Sets the model object to handle single selections.

Parameters
model the new SingleSelectionModel

public void setUI (PopupMenuUI ui)

Sets the L&F object that renders this component.

Parameters
ui the new PopupMenuUI L&F object

public void setVisible (boolean b)

Sets the visibility of the popup menu.

Parameters
b true to make the popup visible, or false to hide it

public void show (Component invoker, int x, int y)

Displays the popup menu at the position x,y in the coordinate space of the component invoker.

Parameters
invoker the component in whose space the popup menu is to appear
x the x coordinate in invoker's coordinate space at which the popup menu is to be displayed
y the y coordinate in invoker's coordinate space at which the popup menu is to be displayed

public void updateUI ()

Resets the UI property to a value from the current look and feel.

See Also

Protected Methods

protected PropertyChangeListener createActionChangeListener (JMenuItem b)

Returns a properly configured PropertyChangeListener which updates the control as changes to the Action occur.

protected JMenuItem createActionComponent (Action a)

Factory method which creates the JMenuItem for Actions added to the JPopupMenu.

Parameters
a the Action for the menu item to be added
Returns
  • the new menu item
See Also

protected void firePopupMenuCanceled ()

Notifies PopupMenuListeners that this popup menu is cancelled.

protected void firePopupMenuWillBecomeInvisible ()

Notifies PopupMenuListeners that this popup menu will become invisible.

protected void firePopupMenuWillBecomeVisible ()

Notifies PopupMenuListeners that this popup menu will become visible.

protected void paintBorder (Graphics g)

Paints the popup menu's border if the borderPainted property is true.

Parameters
g the Graphics object

protected String paramString ()

Returns a string representation of this JPopupMenu. This method is intended to be used only for debugging purposes, and the content and format of the returned string may vary between implementations. The returned string may be empty but may not be null.

Returns
  • a string representation of this JPopupMenu.

protected void processFocusEvent (FocusEvent evt)

Processes focus events occurring on this component by dispatching them to any registered FocusListener objects.

This method is not called unless focus events are enabled for this component. Focus events are enabled when one of the following occurs:

  • A FocusListener object is registered via addFocusListener.
  • Focus events are enabled via enableEvents.

If focus events are enabled for a Component, the current KeyboardFocusManager determines whether or not a focus event should be dispatched to registered FocusListener objects. If the events are to be dispatched, the KeyboardFocusManager calls the Component's dispatchEvent method, which results in a call to the Component's processFocusEvent method.

If focus events are enabled for a Component, calling the Component's dispatchEvent method with a FocusEvent as the argument will result in a call to the Component's processFocusEvent method regardless of the current KeyboardFocusManager.

Note that if the event parameter is null the behavior is unspecified and may result in an exception.

Parameters
evt the focus event

protected void processKeyEvent (KeyEvent evt)

Processes key stroke events such as mnemonics and accelerators.

Parameters
evt the key event to be processed