【Java/Swing】让窗格响应键盘事件
【关键】
1.使JFrame实现KeyListener接口;
2.实现
-
public void keyTyped(KeyEvent e)
:按一下键盘上的某个键 -
public void keyPressed(KeyEvent e)
:一直按着某个键不松开 -
public void keyReleased(KeyEvent e)
:松开
三个方法,在keyReleased里书写自己的处理。
【注意】
有些键比如空格和箭头键一直都能出来,而-+等需要按下shift才能出来。
【代码】
package test230503; import javax.swing.JFrame; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; /** * 使窗格相应键盘事件 */ public class MyFrame extends JFrame implements KeyListener { public MyFrame(){ setSize(400,300); setTitle("My Frame"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); addKeyListener(this); setVisible(true); } @Override public void keyTyped(KeyEvent e) { // do nothing } @Override public void keyPressed(KeyEvent e) { // do nothing } @Override public void keyReleased(KeyEvent e) { int code = e.getKeyCode(); if(code==32){ System.out.println("空格"); }else if(code==37){ System.out.println("左箭头"); }else if(code==39){ System.out.println("右箭头"); }else if(code==38){ System.out.println("上箭头"); }else if(code==40){ System.out.println("下箭头"); }else if(code==45){ // 需要按shift一次 System.out.println("-"); }else if(code==61){ // 需要按shift一次 System.out.println("+"); }else{ System.out.println("code="+code); } } public static void main(String[] args){ new MyFrame(); } }
输出:
空格 上箭头 上箭头 上箭头 下箭头 下箭头 右箭头 右箭头 左箭头 左箭头 code=16 + - + - + - + - + - code=16 上箭头 上箭头 下箭头 下箭头 右箭头 右箭头 左箭头 code=16 上箭头 上箭头 下箭头 下箭头 左箭头 左箭头 右箭头 右箭头
参考资料:
1.https://blog.csdn.net/Alita233_/article/details/127165695
2.http://www.blogjava.net/cherishchen/archive/2009/12/07/304971.html
END
分类:
Java.Swing
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2020-05-03 agumaster增加了网易数据源
2020-05-03 给MySQL中数据表添加字段
2020-05-03 使用jackson解析json串得到树模型,然后遍历树模型获得需要的数据
2020-05-03 从网易财经行情中心爬取股票信息
2020-05-03 Agumaster漂亮起来了
2020-05-03 Thymeleaf 中如何实现including