java - JComponent 上用于 Ctrl 键的 KeyListener

标签 java swing keylistener ctrl

我希望 Swing 中的 JComponent 上有一个 KeyListener,它可以在按下和释放 ctrl 键时使用react。 这是一个幼稚但次优的解决方案(它对每次按键都有反应,而不仅仅是在按下/释放 ctrl 键时:

new KeyAdapater() {
  public void keyPressed(KeyEvent e) {
    if (e.isControlDown()) {
       //do something
    }
  }
  public void keyReleased(KeyEvent e) {
    if (!e.isControlDown()) {
       //do something other
    }
  }
}

只有在按下或释放 ctrl 键本身时才触发的更好方法是什么?

最佳答案

恕我直言,使用 Key bindings是一种更灵活、更可靠的方法,具有以下优势:

话虽如此,我们可以像下面这样创建KeyStrokes:

KeyStroke controlKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_CONTROL, 0);

我们甚至可以指定按键释放事件将触发击键:

KeyStroke controlReleasedKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_CONTROL, 0, true);

注意: 0 表示没有修饰符,true 是一个标志,指示击键代表按键释放事件。请参阅the API了解更多详情。

另请参阅此主题:Key bindings vs. key listeners in Java ,和How to Use Key Bindings教程

关于java - JComponent 上用于 Ctrl 键的 KeyListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27315957/

相关文章:

java - 如何在 Android 应用程序中指定和添加自定义打印机?

java - 为什么 Any 的方法不是抽象的或原生的?

java - 模拟鼠标事件

java - 在 Java 中最大化 JInternalFrame

java - 如何禁用 Java Swing 应用程序中的“开始”按钮?

java - 逐渐加速 Sprite

java - redisTemplate 上的 Spring Redis 空指针异常

java - 通过枚举类型初始化参数

java - 如何在 JFrame 中定位组件?

java - 框架内任何地方的 ListenKey 有更好的解决方案吗?