SWING JPopupMenu Class



Popup menu represents a menu which can be dynamically popped up at a specified position within a component.

Class declaration

Following is the declaration for javax.swing.JPopupMenu class:

public class JPopupMenu
   extends JComponent
      implements Accessible, MenuElement

Class constructors

S.N.Constructor & Description
Constructs a JPopupMenu without an "invoker".
2JPopupMenu(String label)
Constructs a JPopupMenu with the specified title.

Class methods

S.N.Method & Description
1JMenuItem add(Action a)
Appends a new menu item to the end of the menu which dispatches the specified Action object.
2JMenuItem add(JMenuItem menuItem)
Appends the specified menu item to the end of this menu.
3JMenuItem add(String s)
Creates a new menu item with the specified text and appends it to the end of this menu.
4void addMenuKeyListener(MenuKeyListener l)
Adds a MenuKeyListener to the popup menu.
5void addPopupMenuListener(PopupMenuListener l)
Adds a PopupMenu listener.
6void addSeparator()
Appends a new separator at the end of the menu.
7protected PropertyChangeListener createActionChangeListener(JMenuItem b)
Returns a properly configured PropertyChangeListener which updates the control as changes to the Action occur.
8protected JMenuItem createActionComponent(Action a)
Factory method which creates the JMenuItem for Actions added to the JPopupMenu.
9protected void firePopupMenuCanceled()
Notifies PopupMenuListeners that this popup menu is cancelled.
10protected void firePopupMenuWillBecomeInvisible()
Notifies PopupMenuListeners that this popup menu will become invisible.
11protected void firePopupMenuWillBecomeVisible()
Notifies PopupMenuListeners that this popup menu will become visible.
12AccessibleContext getAccessibleContext()
Gets the AccessibleContext associated with this JPopupMenu.
13Component getComponent()
Returns this JPopupMenu component.
14Component getComponentAtIndex(int i)
Deprecated. replaced by Container.getComponent(int)
15int getComponentIndex(Component c)
Returns the index of the specified component.
16static boolean getDefaultLightWeightPopupEnabled()
Gets the defaultLightWeightPopupEnabled property, which by default is true.
17Component getInvoker()
Returns the component which is the 'invoker' of this popup menu.
18String getLabel()
Returns the popup menu's label
19Insets getMargin()
Returns the margin, in pixels, between the popup menu's border and its containees.
20MenuKeyListener[] getMenuKeyListeners()
Returns an array of all the MenuKeyListeners added to this JPopupMenu with addMenuKeyListener().
21PopupMenuListener[] getPopupMenuListeners()
Returns an array of all the PopupMenuListeners added to this JMenuItem with addPopupMenuListener().
22SingleSelectionModel getSelectionModel()
Returns the model object that handles single selections.
23MenuElement[] getSubElements()
Returns an array of MenuElements containing the submenu for this menu component.
24PopupMenuUI getUI()
Returns the look and feel (L&F) object that renders this component.
25String getUIClassID()
Returns the name of the L&F class that renders this component.
26void insert(Action a, int index)
Inserts a menu item for the specified Action object at a given position.
27void insert(Component component, int index)
Inserts the specified component into the menu at a given position.
28boolean isBorderPainted()
Checks whether the border should be painted.
29boolean isLightWeightPopupEnabled()
Gets the lightWeightPopupEnabled property.
30boolean isPopupTrigger(MouseEvent e)
Returns true if the MouseEvent is considered a popup trigger by the JPopupMenu's currently installed UI.
31boolean isVisible()
Returns true if the popup menu is visible (currently being displayed).
32void menuSelectionChanged(boolean isIncluded)
Messaged when the menubar selection changes to activate or deactivate this menu.
33void pack()
Lays out the container so that it uses the minimum space needed to display its contents.
34protected void paintBorder(Graphics g)
Paints the popup menu's border if the borderPainted property is true.
35protected String paramString()
Returns a string representation of this JPopupMenu.
36protected void processFocusEvent(FocusEvent evt)
Processes focus events occurring on this component by dispatching them to any registered FocusListener objects.
37protected void processKeyEvent(KeyEvent evt)
Processes key stroke events such as mnemonics and accelerators.
38void 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.
39void processMouseEvent(MouseEvent event, MenuElement[] path, MenuSelectionManager manager)
This method is required to conform to the MenuElement interface, but it not implemented.
40void remove(int pos)
Removes the component at the specified index from this popup menu.
41void removeMenuKeyListener(MenuKeyListener l)
Removes a MenuKeyListener from the popup menu.
42void removePopupMenuListener(PopupMenuListener l)
Removes a PopupMenu listener.
43void setBorderPainted(boolean b)
Sets whether the border should be painted.
44static void setDefaultLightWeightPopupEnabled(boolean aFlag)
Sets the default value of the lightWeightPopupEnabled property.
45void setInvoker(Component invoker)
Sets the invoker of this popup menu -- the component in which the popup menu menu is to be displayed.
46void setLabel(String label)
Sets the popup menu's label.
47void setLightWeightPopupEnabled(boolean aFlag)
Sets the value of the lightWeightPopupEnabled property, which by default is true.
48void setLocation(int x, int y)
Sets the location of the upper left corner of the popup menu using x, y coordinates.
49void setPopupSize(Dimension d)
Sets the size of the Popup window using a Dimension object.
50void setPopupSize(int width, int height)
Sets the size of the Popup window to the specified width and height.
51void setSelected(Component sel)
Sets the currently selected component, This will result in a change to the selection model.
52void setSelectionModel(SingleSelectionModel model)
Sets the model object to handle single selections.
53void setUI(PopupMenuUI ui)
Sets the L&F object that renders this component.
54void setVisible(boolean b)
Sets the visibility of the popup menu.
55void show(Component invoker, int x, int y)
Displays the popup menu at the position x,y in the coordinate space of the component invoker.
56void updateUI()
Resets the UI property to a value from the current look and feel.

Methods inherited

This class inherits methods from the following classes:

  • javax.swing.JComponent

  • java.awt.Container

  • java.awt.Component

  • java.lang.Object

JPopupMenu Example

Create the following java program using any editor of your choice in say D:/ > SWING > com > tutorialspoint > gui >

package com.tutorialspoint.gui;

import java.awt.*;
import java.awt.event.*;

public class SwingMenuDemo {
   private JFrame mainFrame;
   private JLabel headerLabel;
   private JLabel statusLabel;
   private JPanel controlPanel; 

   public SwingMenuDemo(){

   public static void main(String[] args){
      SwingMenuDemo  swingMenuDemo = new SwingMenuDemo();     
   private void prepareGUI(){
      mainFrame = new JFrame("Java SWING Examples");
      mainFrame.setLayout(new GridLayout(3, 1));

      headerLabel = new JLabel("",JLabel.CENTER );
      statusLabel = new JLabel("",JLabel.CENTER);        

      mainFrame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent windowEvent){
      controlPanel = new JPanel();
      controlPanel.setLayout(new FlowLayout());


   private void showPopupMenuDemo(){
      final JPopupMenu editMenu = new JPopupMenu("Edit"); 

      JMenuItem cutMenuItem = new JMenuItem("Cut");

      JMenuItem copyMenuItem = new JMenuItem("Copy");

      JMenuItem pasteMenuItem = new JMenuItem("Paste");

      MenuItemListener menuItemListener = new MenuItemListener();



      mainFrame.addMouseListener(new MouseAdapter() {
         public void mouseClicked(MouseEvent e) {            
            editMenu.show(mainFrame, e.getX(), e.getY());

Compile the program using command prompt. Go to D:/ > SWING and type the following command.

D:\SWING>javac com\tutorialspoint\gui\SwingMenuDemo.java

If no error comes that means compilation is successful. Run the program using following command.

D:\SWING>java com.tutorialspoint.gui.SwingMenuDemo

Verify the following output. (Click in the middle on the screen.)

SWING JPopupMenu