【Java入门】键盘监听器KeyListener

概述

KeyListener是用于接收键盘事件(击键)的监听器接口。

使用组件的 addKeyListener 方法将从该类所创建的侦听器对象向该组件注册。按下、释放或键入键时生成键盘事件。然后调用侦听器对象中的相关方法并将该 KeyEvent 传递给它。

方法

该接口的3个方法
void keyPressed(KeyEvent e) // 按下某个键时调用此方法。
void keyReleased(KeyEvent e) // 释放某个键时调用此方法。
void keyTyped(KeyEvent e) // 键入某个键时调用此方法。

KeyEvent

表示组件中发生键击的事件。

当按下、释放或键入某个键时,组件对象将生成此低级别事件。该事件被传递给每一个 KeyListener 或 KeyAdapter 对象。

主要用到的方法:
public int getKeyCode() // 返回与此事件中的键关联的整数 keyCode。
public char getKeyChar() // 返回与此事件中的键关联的字符

keyCode是一个整数,代表了这个键的编码。
keyChar是指这个键的值,例如某个字母、某个数字、某个符号。

一个keyCode不一定只对应一个按键,keyChar也不一定只对应一个按键。
例如,键盘上方的数字跟小键盘的数字,它们的keyChar相同,但是keyCode不一样。
再例如,左边的shift、ctrl和右边的shift、ctrl,keyCode和keyChar都是一样的(要区分就用getKeyLocation方法)。

详细每个键对应的keyCode可以看看这篇博客: https://blog.csdn.net/KIG_cat/article/details/50676885

如何使用

首先用一个监听器类实现KeyListener接口,然后创建对象,在组件上用addKeyListener方法添加监听器。
但是我一开始尝试在JPanel上添加这个监听器对象之后,没有报错,但实际按下键盘却没有反应。百度了一下,发现还漏了一步,就是要让组件获得焦点
所以还要在JFrame设置可见之后,让JPanel获得焦点,可以用 void requestFocus() 方法:请求此 Component 获取输入焦点,并且此 Component 的顶层祖先成为获得焦点的 Window。也可以使用 requestFocusInWindow 方法:如果此 Component 的顶层祖先已经是获得焦点的 Window,则请求此 Component 获取输入焦点。更推荐后者,因为可在各种平台之间一致地实现此方法的焦点行为。

frame.setVisible(true);   //要在这一步之后。。。
// ......
mainPanel.addKeyListener(listener);   //添加按键监听器
mainPanel.requestFocusInWindow();     //获得焦点
  • 10
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java中可以使用键盘监听器(Keyboard Listener)来监听键盘事件,以进行相关的操作。 首先需要实现KeyListener接口,该接口定义了三个方法:keyPressed、keyReleased和keyTyped,分别对应按键按下、按键松开和按键按下后松开之前的事件。 例如,以下代码实现了一个简单的键盘监听器: ``` import java.awt.event.KeyEvent; import java.awt.event.KeyListener; public class MyKeyListener implements KeyListener { public void keyPressed(KeyEvent event) { System.out.println("Key Pressed: " + event.getKeyChar()); } public void keyReleased(KeyEvent event) { System.out.println("Key Released: " + event.getKeyChar()); } public void keyTyped(KeyEvent event) { System.out.println("Key Typed: " + event.getKeyChar()); } } ``` 在上面的代码中,我们实现了KeyListener接口,并重写了三个方法。在keyPressed和keyReleased方法中,我们输出了按下和松开的键字符;在keyTyped方法中,我们输出了按键字符。 接着,我们需要将该键盘监听器添加到相应的组件上,例如JFrame: ``` import javax.swing.JFrame; public class MyFrame extends JFrame { public MyFrame() { this.addKeyListener(new MyKeyListener()); this.setSize(400, 400); this.setVisible(true); } public static void main(String[] args) { new MyFrame(); } } ``` 在上面的代码中,我们创建了一个继承自JFrame的MyFrame类,并在构造函数中将MyKeyListener添加到MyFrame上。最后,我们创建了一个MyFrame对象并显示它。 这样,当用户在MyFrame中按下、松开或输入键时,MyKeyListener中相应的方法就会被调用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值