我的mouseListener
上有一个Component
我需要在mousePressed
上执行操作,除了一个:focus
在另一个window
上Component
用户点击mousePressed
。
如果在Component
被解雇之前focusOwner
是另一个window
,我如何忽略MouseEvent
的{{1}}? FocusListener.focusGained
并在点击时刻查看focusOwner
无法提供帮助。
UPD:我的任务是在focusGained
因mousePressed
被解雇时检测案例。
答案 0 :(得分:2)
使用WindowListener
并处理windowActivated
和windowDeactivated
事件以注册/取消注册MouseListener。
您可能需要在SwingUtilities.invokeLater()中添加MouseListener,以确保在窗口具有焦点后添加侦听器。
答案 1 :(得分:1)
我遇到了类似的问题。 如果您实现并注册了FocusListener,您可以在focusGained方法中询问FocusEvent.getOppositeComponent()并检测用户是否更改了窗口。之后,您可以注册Mouslistener并在focusLost方法中取消注册。