如何从JPopupMenu访问MouseEvent getX()/ getY()?

时间:2014-10-02 21:02:21

标签: java swing mouseevent actionlistener jpopupmenu

我有一个像这样的弹出菜单

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

然后我添加一个MouseListener:

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

在我的MenuItem的Actionlistener中,我想从我的MouseEvent访问x / y数据。如果不将它们保存在额外的变量中,这可能吗?我想得到这样的东西:

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

    });

1 个答案:

答案 0 :(得分:2)

如果你想获得弹出菜单的事件的鼠标坐标 - 如果不保存它就不可能。如果你想获得触发菜单项动作的鼠标事件 - 是的,可能:EventQueue.getCurrentEvent();将返回事件(你应该检查这个事件是否是鼠标事件,如果是的话 - 投下它,因为也可以用键事件触发动作。)

public void actionPerformed(ActionEvent arg0) {
  AWTEvent evt = EventQueue.getCurrentEvent();
  if (evt instanceof MouseEvent) {
    MouseEvent me = (MouseEvent) evt;
  }
}