By Alvin Alexander. Last updated: March 20, 2018
Here's an example of how to add a JPopupMenu to a JTable. The purpose of the popup menu is to let the user right-click on contents in the table and work directly with those contents.
In the code below I've taken a real class and trimmed it down considerably for these demo purposes. I hope the code remaining is useful enough to help you implement your own JPopupMenu on a JTable, or perhaps in other components as well.
package com.devdaily.mywidget.view; import java.awt.*; import javax.swing.*; import java.awt.event.*; public class MyWidgetTablePanel extends JPanel { BorderLayout borderLayout1 = new BorderLayout(); JScrollPane MyWidgetTableScrollPane = new JScrollPane(); MyWidgetController controller; MyWidgetTableModel MyWidgetTableModel; JPopupMenu popupMenu = new JPopupMenu(); private static String INSERT_CMD = "Insert Rows"; private static String DELETE_CMD = "Delete Rows"; JTable MyWidgetTable = new JTable(); public MyWidgetTablePanel(MyWidgetController controller, MyWidgetTableModel MyWidgetTableModel) { this.controller = controller; this.MyWidgetTableModel = MyWidgetTableModel; MyWidgetTable.setModel(MyWidgetTableModel); this.setLayout(borderLayout1); this.add(MyWidgetTableScrollPane, BorderLayout.CENTER); MyWidgetTableScrollPane.getViewport().add(MyWidgetTable, null); JMenuItem menuItem = new JMenuItem(INSERT_CMD); menuItem.addActionListener(new InsertRowsActionAdapter(this)); popupMenu.add(menuItem); MouseListener popupListener = new PopupListener(); MyWidgetTable.addMouseListener(popupListener); } class PopupListener extends MouseAdapter { public void mousePressed(MouseEvent e) { showPopup(e); } public void mouseReleased(MouseEvent e) { showPopup(e); } private void showPopup(MouseEvent e) { if (e.isPopupTrigger()) { popupMenu.show(e.getComponent(), e.getX(), e.getY()); } } } void insertRowsctionPerformed(ActionEvent e) { int row = MyWidgetTable.getSelectedRow(); controller.doInsertPagesAction(row); } } // end of class class InsertRowsActionAdapter implements ActionListener { MyWidgetTablePanel adaptee; InsertRowsActionAdapter(MyWidgetTablePanel adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.insertRowsActionPerformed(e); } }