【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