Java KeyEvent 比较 - arg0 是否等于特定键

标签 java comparison keylistener keyevent

我创建了一个新的 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 情况。它总是跳转到其他情况。这种行为的原因是什么?

最佳答案

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

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.");
    }
}

关于Java KeyEvent 比较 - arg0 是否等于特定键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10434670/

相关文章:

java - Android动态列表对话框

java - 比较字符串中的两个时间

java - KeyTyped 方法说 TextField 为空...但实际上不是

java - 具有权重或偏差的随机 boolean 值

java - 在 JPanel 上绘制部分透明的 PNG

java - 如何为 Java 应用程序调试 C++ dll

java - KeyListener 中出现意外的 StackOverflowError

string - Delphi - 在 CASE 语句中使用函数

带有比较运算符和小数位的 PHP 脚本逻辑

java - AWT 正忙着等待