MouseEvent对象是用Java创建的

时间:2015-01-19 12:50:09

标签: java events input mouse

我正在尝试跟踪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(...)"句子,但我无法在任何地方找到它。非常感谢你的帮助。

1 个答案:

答案 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)