【问题标题】:Control key is not getting detected未检测到控制键
【发布时间】:2012-08-29 04:01:54
【问题描述】:

此关键事件不起作用。相同的代码正在工作,

VK_SPACE

它不能用于控制

private void jTextArea1KeyPressed(java.awt.event.KeyEvent evt) {
    if ((evt.getKeyChar() == KeyEvent.VK_CONTROL)) {
        System.out.println("CONTROL IS PRESSED");
    }
} 

【问题讨论】:

  • CTRL 是修饰键。我猜它不会触发 keyPressed 事件。
  • 正如 mKorbel 所指出的,KeyListeners 不是你最好的朋友。在你的情况下(并且不知道更多),我建议使用key bindings

标签: java swing jtextarea keylistener key-events


【解决方案1】:

不要将getKeyChar 与那些VK_ 常量结合使用。请改用getKeyCodegetKeyChar 仅用于可打印键,这会导致在正常操作中打印字符。另一方面,getKeyCode 旨在为您提供按下的键的代码(即 VK_ 常量),即使没有关联字符(如 Ctrl 的情况)。

另见this answer

【讨论】:

  • 方向错误,有DocumentDocumentXxxTextAction
【解决方案2】:

【讨论】:

  • 这在很大程度上取决于您要做什么。例如。问题中示例的核心,即在按下 Ctrl 时执行某些操作,不能通过这些接口使用。而且可能有理由这样做。
  • @MvG 我想念原因,不会让我感觉 SHIFT 或 CTRL 被按下,因为 JTextComponents 不是为此指定的,但没有人知道真正的想法......,出于赞成票。 ..
【解决方案3】:

java.awt.event.KeyEvent 上有一个方法只是为了你的目的 - isControlDown()

【讨论】:

  • 已选中,检测到单个 Ctrl。谢谢。
猜你喜欢
  • 2019-11-11
  • 2019-08-15
  • 2014-07-16
  • 2014-09-15
  • 2019-09-07
  • 2013-12-16
  • 1970-01-01
  • 2014-10-04
相关资源
最近更新 更多