Show Popup Menu on Right-Click in JComboBox in Java



JComboBox is a Swing component that has a built-in left-click menu. In this article, we will learn how to show a popup menu when the user right-clicks on a JComboBox in Java. 

What is a JComboBox?

A JComboBox is a subclass of the JComponent class that displays a drop-down list and gives users options that they can select only one item at a time. A JComboBox can be editable or read-only.

The getSelectedItem() Method

A getSelectedItem() method can be used to get the selected or entered item from a combo box.

What is a Popup Menu?

A popup menu is a scrollable list of options that shows up when you right-click(interact) on a Component. It allows users to select an item from the available choices present inside the list. Following is the representation of a pop-up menu:

How to Show a Popup Menu in a JComboBox?

We can invoke a popup menu from a JComboBox when the user right-clicks on it by implementing a MouseListener interface and need to override the mouseReleased() method.

The mouseReleased() Method

The mouseReleased() is a method of the MouseListener interface. This method is called when a mouse button has been released on a component. It takes only one argument (MouseEvent e) in which e is the MouseEvent.

MouseListener Interface

The MouseListener interface handles all the mouse interactions(press, release, click, enter, and exit). The class that processes the MouseEvent should implement this interface. The object for a MouseListener is registered using the addMouseListener() method.

The following are the methods of the MouseListener interface:

  • mouseReleased
  • mouseClicked()
  • mouseEntered()
  • mouseExited()
  • mousePressed()

Syntax

Below is the syntax for declaring a mouseReleased() Method:

public void mouseReleased(MouseEvent me)

The isPopupTrigger() Method

The isPopupTrigger() is a method of the MouseEvent class. This method determines if a mouse event triggers a popup menu on the component.

Showing the Popup Menu on a JComboBox on a Right Click

To show a popup menu when we right-click on a JComboBox in Java, in the first step, we will initialize a JComboBox named "jcb", then we will create a JPopupMenu named "jpm".

jcb = new JComboBox(new String[] {"Item 1", "Item 2", "Item 3"});
jpm = new JPopupMenu();

Next, we will create two JMenuItems: mItem1 and mItem2, titled "Popup Item 1" and "Popup Item 2" respectively, and add both items to the JPopupMenu using the add() method.

A MouseAdapter is attached to the MouseListener to detect right-clicks (popup triggers) on the JButton retrieved using the getComponent() method, then checks if the mouse event is a right-click with the help of isPopupTrigger(), and then shows the JPopupMenu items in a form a of a list.

((JButton)jcb.getComponent(0)).addMouseListener(new MouseAdapter() {
   public void mouseReleased(MouseEvent me) {
      if (me.isPopupTrigger()) {
         jpm.show(jcb, me.getX(), me.getY());
      }
   }
});

Example

Below is an example of showing a pop-up menu when the user right-clicks on a JComboBox in Java:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JComboBoxPopupTest extends JFrame {
   private JComboBox jcb;
   private JPopupMenu jpm;
   private JMenuItem mItem1, mItem2;
   public JComboBoxPopupTest() {
      setTitle("JComboBoxPopup Test");
      setLayout(new FlowLayout());
      jcb = new JComboBox(new String[] {"Item 1", "Item 2", "Item 3"});
      jpm = new JPopupMenu();
      mItem1 = new JMenuItem("Popup Item 1");
      mItem2 = new JMenuItem("Popup Item 2");    
      jpm.add(mItem1);
      jpm.add(mItem2);
      ((JButton)jcb.getComponent(0)).addMouseListener(new MouseAdapter() {
         public void mouseReleased(MouseEvent me) {
            if (me.isPopupTrigger()) {
               jpm.show(jcb, me.getX(), me.getY());
            }
         }
      });
      add(jcb);
      setSize(400, 300);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }
   public static void main(String[] args) throws Exception {
      new JComboBoxPopupTest();
   }
}

Output

Alshifa Hasnain
Alshifa Hasnain

Converting Code to Clarity

Updated on: 2025-05-21T14:37:01+05:30

451 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements