比如我在用Delphi编写的应用程序的界面上单击鼠标,或按下某键,将会触发某事件,Windows将会发送一个消息给这个Delphi应用程序。
我想问的是,消息事件机制只是Windows有的吗?我用Java编写一个应用程序,我单击鼠标或按下某键,也会触发某个事情,那Java的消息事件又是怎么回事呢?Java的消息事件机制应该不会依赖Windows吧?那消息机制与操作系统,与某一计算机语言有什么联系呢?

解决方案 »

  1.   

    这个问题有点高深。
    说说我的理解,即事件循环机制和os没有必然的关联,例如linux下的C编程本身没有时间循环机制,但是minigui却能模拟出类似windows下的时间循环机制出来。依此类推,java的这套事件捕捉机制估计是jvm模拟出来的
      

  2.   

    首先 消息机制,关于设备的事件,全部是系统给出来的。
    系统将事件发送给JVM的EventQueue,然后JVM使用EventDispatchThread,进行消息处理。
    JAVA内部产生的消息也使用EventQueue进行处理。
    AWT的事件(MouseEvent等)处理是系统直接发送给各个控件的。
    SWING的事件是发送给界面的Panel的,然后进行事件分解。
    连接这些原理可以做自动测试了