windowActivated(由WindowListener实现)和windowGainedFocus(由WindowFocusListener实现)之间的主要区别是什么?

Java文档说:

windowGainedFocus:


  当Window设置为焦点窗口时调用,这意味着Window或其子组件之一将接收键盘事件。


windowActivated:


  当窗口设置为活动窗口时调用。只有框架或对话框可以是活动窗口。本机窗口系统可以用特殊装饰(例如突出显示的标题栏)表示活动窗口或其子级。活动窗口始终是焦点窗口,或者是焦点窗口所有者的第一个框架或对话框。


但是有什么区别呢?还是正如所说的那样,聚焦窗口是一种激活的窗口?

提前致谢!

最佳答案

来自How to Write Window Listeners,它也反映了您的问题中的引用:


  windowActivated(WindowEvent)windowDeactivated(WindowEvent)
  
  在激活或停用监听窗口后立即调用
  分别。这些方法不会发送到不是
  框架或对话框。因此,windowGainedFocus和
  windowLostFocus方法来确定窗口何时获得或失去
  重点优先。




因此,仅当窗口是框架或对话框时执行windowActivated,而windowGainedFocus适用于所有类型。

09-27 14:01