0

我正在用 Java 编写一个语法高亮文本编辑器,但我遇到了一些问题,即我该做什么而不是我想要做什么。基本上 KeyEvent 类给我带来了一些问题:

  1. KeyTyped 不允许我识别密钥是什么,因此它对词法分析毫无用处。
  2. KeyPressed 更好,它允许我在按下每个键时对其进行标识,这对词法分析非常有用,但是它会在键实际放入 JEditorPane 之前触发事件。
  3. KeyReleased 解决了 KeyPressed 和 KeyTyped 的问题,因为它发生在输入字符之后,它允许我实际识别字符是什么。但是,如果我持有 'a' 并放入 50 个 'a',我就完蛋了。

我对这个问题的解决方案是对所有要输入的字符使用 KeyPressed,使用事件,读取应该输入的字符并手动输入它,但是我猜这不是最优雅的解决方案. 我的问题是我还能怎么做?有什么我只是在上釉,还是我找到了解决问题的方法并且应该顺其自然?

4

2 回答 2

1

JavaDoc似乎与您对 KeyEvent 所说的相反:

getKeyChar 方法总是返回一个有效的 Unicode 字符或 CHAR_UNDEFINED。字符输入由 KEY_TYPED 事件报告:KEY_PRESSED 和 KEY_RELEASED 事件不一定与字符输入相关联。因此,保证 getKeyChar 方法的结果只对 KEY_TYPED 事件有意义。

于 2010-11-11T01:19:59.303 回答
0

您可能应该使用Document Listener

于 2010-11-11T03:32:04.033 回答