JPopupMenu with mouse event : Popup menu « Swing JFC « Java






JPopupMenu with mouse event

 
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;

public class PopUpColorMenu implements ActionListener {
  Component selectedComponent;

  public PopUpColorMenu() {
    JFrame frame = new JFrame();

    final JPopupMenu colorMenu = new JPopupMenu("Color");
    colorMenu.add(makeMenuItem("Red"));
    colorMenu.add(makeMenuItem("Green"));
    colorMenu.add(makeMenuItem("Blue"));

    MouseListener mouseListener = new MouseAdapter() {
      public void mousePressed(MouseEvent e) {
        checkPopup(e);
      }

      public void mouseClicked(MouseEvent e) {
        checkPopup(e);
      }

      public void mouseReleased(MouseEvent e) {
        checkPopup(e);
      }

      private void checkPopup(MouseEvent e) {
        if (e.isPopupTrigger()) {
          selectedComponent = e.getComponent();
          colorMenu.show(e.getComponent(), e.getX(), e.getY());
        }
      }
    };

    frame.setLayout(new FlowLayout());
    JButton button = new JButton("Uno");
    button.addMouseListener(mouseListener);
    frame.add(button);
    button = new JButton("Due");
    button.addMouseListener(mouseListener);
    frame.add(button);
    button = new JButton("Tre");
    button.addMouseListener(mouseListener);
    frame.add(button);

    frame.getContentPane().addMouseListener(mouseListener);

    frame.setSize(200, 50);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
  }

  public void actionPerformed(ActionEvent e) {
    String color = e.getActionCommand();
    if (color.equals("Red"))
      selectedComponent.setBackground(Color.red);
    else if (color.equals("Green"))
      selectedComponent.setBackground(Color.green);
    else if (color.equals("Blue"))
      selectedComponent.setBackground(Color.blue);
  }

  private JMenuItem makeMenuItem(String label) {
    JMenuItem item = new JMenuItem(label);
    item.addActionListener(this);
    return item;
  }

  public static void main(String[] args) {
    new PopUpColorMenu();
  }
}

   
  








Related examples in the same category

1.Creating a Popup Menu
2.A popup menu is sometimes called a context menu
3.Force the popup menu of a JMenu to be heavyweight
4.Creating a Popup Menu with Nested Menus
5.set Component Popup Menu
6.Forcing a Popup Menu to Be a Heavyweight Component
7.Configure all popup menus to be heavyweight
8.setInheritsPopupMenu