0

I have a popupmenu like this

final JPopupMenu contextMenu = new JPopupMenu();
final JMenuItem addTask = new JMenuItem("Add Task");

Then i add a MouseListener:

component.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseReleased(MouseEvent e) 
        {    
            if (e.isPopupTrigger()) {
                contextMenu.show(e.getComponent(), e.getX(), e.getY());
            }
        }
}

In my Actionlistener for the MenuItem i would like to access the x/y-data from my MouseEvent. Is this possible without saving them in an extra variable? i would like to get something like this:

addTask.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            //System.out.println(Mouse.getX()+", "+Mouse.getY());
        }

    });
Andrew Thompson
  • 168,117
  • 40
  • 217
  • 433
MS1
  • 508
  • 9
  • 23

1 Answers1

2

If you want to get the mouse coordinate of event which has trggered the popup menu - no it's impossible without to save it. If you want to get the mouse event whcih has triggered the menu item action - yes it's possible: EventQueue.getCurrentEvent(); will return the event (you should check whether this event is a mouse event and if yes - cast it, because the action can also be triggered with key event).

public void actionPerformed(ActionEvent arg0) {
  AWTEvent evt = EventQueue.getCurrentEvent();
  if (evt instanceof MouseEvent) {
    MouseEvent me = (MouseEvent) evt;
  }
}
Sergiy Medvynskyy
  • 11,160
  • 1
  • 32
  • 48