在 Java 中使用键码
 
今天我们将研究代表键盘上按键的按键代码。键码是分配给 KeyEvent 对象的整数代码。
在 Java 中使用 KeyListener来监听按键代码
    
在此示例中,我们创建一个框架并在其底部添加一个带有两个标签的输入字段。当我们在该字段中输入键盘上的任何键时,标签将提供有关键的一些信息。
在下面的程序中,我们创建了一个类 JavaKeycodeExample,它扩展了 Frame 类并实现了 KeyListener 接口。Frame 类为我们提供了一个放置输入字段和标签的窗口,而在 KeyListener 接口的帮助下,我们可以覆盖它的三个方法来帮助我们识别关键事件。
在 JavaKeycodeExample 类中,我们创建了两个标签 label1 和 label2,以及一个接受输入的文本字段 textField。我们初始化并设置 AWT 组件的大小以将它们添加到 Frame。
我们使用 addKeyListener() 将 KeyListener 添加到 textField。我们实现了 KeyListener 接口,因此我们必须重写它的三个方法,即记录按下的键的 keyPressed(),识别键入的键的 keyTyped(),以及调用最后一个方法 keyReleased() 当按下的键被释放时。
对于这个例子,我们主要使用 keyPressed() 方法,只要在输入字段中按下一个键,它就会接收一个 KeyEvent 对象 e。要按下键码,我们使用 KeyEvent 对象调用 getKeyCode() 方法并将结果与字符串连接。
我们还使用方法 KeyEvent.getKeyText() 获取表示键代码的文本并传递 e.getKeyCode()。最后,我们将两个字符串都设置为标签 label1 和 label2。
在输出中,我们可以观察到我们在文本字段中按下了键盘上的键 k;第一个标签打印键代码,而第二个标签显示键文本。
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class JavaKeycodeExample extends Frame implements KeyListener {
  Label label1;
  Label label2;
  TextField textField;
  public JavaKeycodeExample() {
    label1 = new Label();
    label1.setBounds(120, 220, 200, 20);
    label2 = new Label();
    label2.setBounds(120, 250, 200, 20);
    textField = new TextField();
    textField.setBounds(100, 100, 200, 100);
    textField.addKeyListener(this);
    add(label1);
    add(label2);
    add(textField);
    setSize(350, 350);
    setLayout(null);
    setVisible(true);
  }
  public void keyPressed(KeyEvent e) {
    String keyCodeString = "Last Key Code Pressed : " + e.getKeyCode();
    String keyCodeAsTextString = "You pressed : " + KeyEvent.getKeyText(e.getKeyCode());
    label1.setText(keyCodeString);
    label2.setText(keyCodeAsTextString);
  }
  @Override
  public void keyTyped(KeyEvent e) {}
  @Override
  public void keyReleased(KeyEvent e) {}
  public static void main(String[] args) {
    new JavaKeycodeExample();
  }
}
输出:

在 Java 中使用 KeyEvent.getKeyText() 打印键代码及其文本描述
有很多键码代表键盘上的按键,在这个程序中,我们打印了其中的一些。我们使用从 0 开始并运行到 50 的 for 循环获取关键代码和描述它的关键文本。
在循环中,循环的每个值都可能是一个键码,我们使用函数 KeyEvent.getKeyText() 获取键文本并传递键码值。
请注意,并非每个整数值都代表一个键码,并且可能返回一个键文本 Unknown keyCode;因此,我们检查字符串 keyCodeText 是否包含文本。如果它是有效的键码,它会打印键码和键码文本。
在输出中,我们观察到箭头的左侧是键码,箭头的右侧是键码的文本描述。
import java.awt.event.KeyEvent;
public class JavaKeycodeExample {
  public static void main(String[] args) {
    for (int keyCode = 0; keyCode < 50; ++keyCode) {
      String keyCodeText = KeyEvent.getKeyText(keyCode);
      if (!keyCodeText.contains("Unknown keyCode")) {
        System.out.println(keyCode + " ---> " + keyCodeText);
      }
    }
  }
}
输出:
3 ---> Cancel
8 ---> Backspace
9 ---> Tab
10 ---> Enter
12 ---> Clear
16 ---> Shift
17 ---> Ctrl
18 ---> Alt
19 ---> Pause
20 ---> Caps Lock
21 ---> Kana
24 ---> Final
25 ---> Kanji
27 ---> Escape
28 ---> Convert
29 ---> No Convert
30 ---> Accept
31 ---> Mode Change
32 ---> Space
33 ---> Page Up
34 ---> Page Down
35 ---> End
36 ---> Home
37 ---> Left
38 ---> Up
39 ---> Right
40 ---> Down
44 ---> Comma
45 ---> Minus
46 ---> Period
47 ---> Slash
48 ---> 0
49 ---> 1
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn