3

我创建了一个新的 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.");
    }
}
...

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

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

4

2 回答 2

4

要将输入与KeyEvent.xxx值进行比较,您需要使用getKeyCode方法int,该方法在您捕获keyPressed或事件时返回一个keyReleased- 然后您可以将值与 a 进行比较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.");
    }
}
于 2012-05-03T15:38:53.160 回答
3

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

于 2012-05-03T15:41:39.357 回答