我们需要从Component.dispatchEventImpl开始调试。
只需阅读该方法的源注释,就可以对事件在Swing中的流动方式有一个完美的了解(您也可以从EventQueue.pumpEventsForHeirarchy开始上一层)。
为了清楚起见,让我从代码中摘录:
- 设置当前事件的时间戳和修饰符。预调度员。在通知AWTEventListener之前,请在此处进行任何必要的重新定位/重新排序。
- 允许工具包将此事件传递给AWTEventListeners。
- 如果没有人消耗过按键事件,请让KeyboardFocusManager处理它。
- 允许输入法处理事件
- 交货前对任何特殊事件进行预处理
- 传送事件以进行正常处理
- 4061116的特殊处理:钩住浏览器以关闭模式对话框。
- 允许对等方处理事件。除KeyEvent外,它们将在所有KeyEventPostProcessor之后由对等方处理(请参见DefaultKeyboardFocusManager.dispatchKeyEvent())。
现在,您可以将上述流程与您的描述进行匹配,以确定其正确与否。但是关键是您实际上不应该依赖私有类的javadocs,原因是开发人员通常不关心代码更改时更新私有类的注释,因此文档可能会过时。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)