【问题标题】:Java KeyEvent comparison - is arg0 equal to a specific keyJava KeyEvent 比较 - arg0 是否等于特定键
【发布时间】:2012-05-13 03:53:45
【问题描述】:

我创建了一个新的 KeyListener,定义如下:

...
public void keyTyped(KeyEvent arg0) {
    if (arg0.equals(KeyEvent.VK_ENTER) || (arg0.equals(KeyEvent.VK_R))) {
        System.out.println("Enter or R key typed.");
        } else {
        System.out.println("Something else typed.");
    }
}
...

我真正想做的是每次输入回车键或“R”时调用一个方法。

我的问题:无论我输入什么,都不会触发 if 案例。它总是跳转到 else 情况。这种行为的原因是什么?

【问题讨论】:

  • 您何时、何地以及如何使用 KeyListener,以获得更好的帮助,尽早使用SSCCE编辑您的问题

标签: java comparison keylistener keyevent


【解决方案1】:

要将输入与KeyEvent.xxx 值进行比较,您需要使用the getKeyCode method,当您捕获keyPressedkeyReleased 事件时,它会返回int - 然后您可以将该值与KeyEvent.xxx 进行比较.如果您想使用 keyTyped 事件,您可以使用 getKeyChar 方法,但它不会捕获某些键(例如操作键或修饰键) - 例如,这应该可以:

public void keyReleased(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_ENTER || e.getKeyCode() == KeyEvent.VK_R) {
        System.out.println("Enter or R key typed.");
    } else {
        System.out.println("Something else typed.");
    }
}

【讨论】:

    【解决方案2】:

    keyTyped 仅适用于 JTextField 或 JTextArea 等控件,您可能正在寻找 keyPressed。如果不是这种情况,您可能需要提供更多上下文。

    【讨论】:

      猜你喜欢
      • 2016-10-22
      • 1970-01-01
      • 2023-03-14
      • 2014-09-29
      • 2015-09-28
      • 2015-03-13
      • 2015-09-16
      • 1970-01-01
      相关资源
      最近更新 更多