我正在尝试跟踪Java如何处理鼠标输入。
到目前为止,我已经了解到,无论何时点击/移动鼠标设备,其上的实际数据都存储在一个文件中(即在Linux中它/ dev / input / mouse0或mouse文件),然后Java通过java.io.ObjectInputStream读取文件并创建java.awt.MouseEvent,然后由java.awt.Component(通过java.awt.AWTEventMulticaster)传递给任何Component的鼠标处理MouseEvent对象的侦听器。
我的问题是 - Java在哪里实际创建了MouseEvent对象?
我对Observer模式和信息不感兴趣如何处理MouseEvents,但是如何从鼠标输入创建特定的java.awt.MouseEvent。 我希望有一个新的MouseEvent(...)"句子,但我无法在任何地方找到它。非常感谢你的帮助。
答案 0 :(得分:0)
我使用IntelliJ IDE在所有MouseEvent
构造函数上放置一个断点,并发现MouseEvent
创建发生在sun.lwawt.*
包空间中(特别是在Mac上,但我怀疑类似的事情发生在其他操作系统上)。对于我的机器,stacktrace包含:
<init>(): 733, MouseEvent (java.awt.event)
dispatchMouseEvent(): 775, LWWindowPeer (sun.lwawt)
handleMouseEvent(): 80, CPlatformResponder (sun.lwawt.macosx)
deliverMouseEvent(): 195, CPlatformView (sun.lwawt.macosx)