忽略mousePressed

时间:2014-04-07 12:19:53

标签: java swing focus mouseevent

我的mouseListener上有一个Component我需要在mousePressed上执行操作,除了一个:focus在另一个windowComponent用户点击mousePressed

如果在Component被解雇之前focusOwner是另一个window,我如何忽略MouseEvent的{​​{1}}? FocusListener.focusGained并在点击时刻查看focusOwner无法提供帮助。

UPD:我的任务是在focusGainedmousePressed被解雇时检测案例。

2 个答案:

答案 0 :(得分:2)

使用WindowListener并处理windowActivatedwindowDeactivated事件以注册/取消注册MouseListener。

您可能需要在SwingUtilities.invokeLater()中添加MouseListener,以确保在窗口具有焦点后添加侦听器。

答案 1 :(得分:1)

我遇到了类似的问题。 如果您实现并注册了FocusListener,您可以在focusGained方法中询问FocusEvent.getOppositeComponent()并检测用户是否更改了窗口。之后,您可以注册Mouslistener并在focusLost方法中取消注册。