我有一个像这样的弹出菜单
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());
}
});
答案 0 :(得分:2)
如果你想获得弹出菜单的事件的鼠标坐标 - 如果不保存它就不可能。如果你想获得触发菜单项动作的鼠标事件 - 是的,可能:EventQueue.getCurrentEvent();
将返回事件(你应该检查这个事件是否是鼠标事件,如果是的话 - 投下它,因为也可以用键事件触发动作。)
public void actionPerformed(ActionEvent arg0) {
AWTEvent evt = EventQueue.getCurrentEvent();
if (evt instanceof MouseEvent) {
MouseEvent me = (MouseEvent) evt;
}
}