在 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