gpt4 book ai didi

java - JVM 如何以及在何处处理键盘敲击?

转载 作者:行者123 更新时间:2023-11-30 11:25:50 25 4
gpt4 key购买 nike

我试图了解在 java 中为按下的键盘键创建 KeyEvent 所涉及的低级过程。

  1. Java 如何以及在哪里处理真实的击键?
  2. 击键在何处“进入”JVM?
  3. 击键如何成为 KeyEvent?

我这样做的目的纯粹是为了了解 java 的内部工作原理。作为奖励:MouseEvents 的过程是相同的、相似的还是完全不同的?


我已经花了一些时间挖掘源代码。因此,这个问题的部分目的是为“awt”以外的源代码和文档提供一些切入点(因为 awt 本身很大)。

也许有一些奇特的包包含构成 JNI 层的类?

最佳答案

How and where does Java process real keystrokes? Where does a keystroke 'enter' the JVM?

这取决于运行 JVM 的操作系统/桌面环境。所有现代操作系统都自行处理与硬件的通信,并且(通常)不允许程序直接访问硬件(这在 MS-DOS 等旧系统上是不同的)。

因此操作系统将接受键盘输入,并将其发送给具有焦点的程序。如果该程序是 JVM,则 JVM 将通过通常的、特定于操作系统的机制接收键盘输入,然后在内部进行处理。

How does a keystroke become a KeyEvent?

当 JVM 接收到击键时,它将对其进行处理并决定必须发生什么。例如,如果一个 GUI 组件当前有输入焦点,JVM 将创建一个 KeyEvent 并将其发送到该组件。


正如 Stephen C 所指出的,如果您想深入挖掘,则必须阅读 JDK 源代码。这是一款庞大而复杂的软件,因此希望先进行一些搜索。

一个好的起点可能是 page for the The Abstract Windowing Toolkit Group ,因为 AWT(Java 的“旧”GUI 框架,在 Swing 之前)仍然处理 GUI 代码的许多低级细节。

关于java - JVM 如何以及在何处处理键盘敲击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20115492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com