在 Java 中使用键码

Rupam Yadav 2023年1月30日 2022年4月27日
  1. 在 Java 中使用 `KeyListener’来监听按键代码
  2. 在 Java 中使用 KeyEvent.getKeyText() 打印键代码及其文本描述
在 Java 中使用键码

今天我们将研究代表键盘上按键的按键代码。键码是分配给 KeyEvent 对象的整数代码。

在 Java 中使用 `KeyListener’来监听按键代码

在此示例中,我们创建一个框架并在其底部添加一个带有两个标签的输入字段。当我们在该字段中输入键盘上的任何键时,标签将提供有关键的一些信息。

在下面的程序中,我们创建了一个类 JavaKeycodeExample,它扩展了 Frame 类并实现了 KeyListener 接口。Frame 类为我们提供了一个放置输入字段和标签的窗口,而在 KeyListener 接口的帮助下,我们可以覆盖它的三个方法来帮助我们识别关键事件。

JavaKeycodeExample 类中,我们创建了两个标签 label1label2,以及一个接受输入的文本字段 textField。我们初始化并设置 AWT 组件的大小以将它们添加到 Frame

我们使用 addKeyListener()KeyListener 添加到 textField。我们实现了 KeyListener 接口,因此我们必须重写它的三个方法,即记录按下的键的 keyPressed(),识别键入的键的 keyTyped(),以及调用最后一个方法 keyReleased() 当按下的键被释放时。

对于这个例子,我们主要使用 keyPressed() 方法,只要在输入字段中按下一个键,它就会接收一个 KeyEvent 对象 e。要按下键码,我们使用 KeyEvent 对象调用 getKeyCode() 方法并将结果与​​字符串连接。

我们还使用方法 KeyEvent.getKeyText() 获取表示键代码的文本并传递 e.getKeyCode()。最后,我们将两个字符串都设置为标签 label1label2

在输出中,我们可以观察到我们在文本字段中按下了键盘上的键 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 键码

在 Java 中使用 KeyEvent.getKeyText() 打印键代码及其文本描述

有很多键码代表键盘上的按键,在这个程序中,我们打印了其中的一些。我们使用从 0 开始并运行到 50for 循环获取关键代码和描述它的关键文本。

在循环中,循环的每个值都可能是一个键码,我们使用函数 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
Author: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

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