我已经读过由组件(如按钮)创建的事件由动作侦听器(对于按钮)处理,但我的一位老师说每个事件都由操作系统处理,所以我很困惑作为实际处理事件的人,是操作系统还是java做的工作。
答案 0 :(得分:3)
我认为handle
这两个词的两个实例意味着完全不同的东西。
您的代码处理引发的事件。所以想象按钮上写着“哦,我已被点击了!”你去“对,我会处理它!”你这样做是为了做到这一点:
button.addActionListener(e -> {...});
操作系统处理提升事件。您的鼠标指针不属于您的程序,对吧?因此,当“单击鼠标左键”信号发送到操作系统时,操作系统将检测鼠标指针的位置。操作系统会说“鼠标指针位于屏幕上的这个位置,那里有一个按钮。这意味着应该点击按钮。嘿!那边的按钮!用户点击了你(someX,someY) )!”。然后,JButton
类将首先尝试设置点击动画的动画并引发“已执行的操作”事件。
答案 1 :(得分:0)
某些类型的events
是用户输入的直接结果。例如,当用户键入键或移动鼠标时,会生成KeyEvent
或MouseEvent
。同样,当用户调整窗口大小或将键盘焦点转移到新组件时,会生成FocusEvent
或ComponentEvent
。这些类型的事件表示由底层本机窗口系统或操作系统生成的事件通知。其他类型的事件(例如ActionEvent
和PopupMenuEvent
,不会源自本机窗口系统。相反,这些事件由AWT
和Swing
组件直接生成