用于接收键盘事件(按键)的侦听器界面。 有兴趣处理键盘事件的类可以实现这个接口(和它包含的所有方法),或扩展抽象的KeyAdapter
类(仅覆盖感兴趣的方法)。
然后,使用该组件的addKeyListener
方法将从该类创建的侦听器对象注册到组件。 按键,释放或键入时会产生键盘事件。 然后调用侦听器对象中的相关方法,并将KeyEvent
传递给它。
该接口有三个方法:
- public void keyReleased(KeyEvent e)释放某个键时调用此方法。
-
public void keyPressed(KeyEvent e)按下某个键时调用此方法。
-
public void keyTyped(KeyEvent e)键入某个键时调用此方法。
实例如下:
package Tank;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class key extends JFrame{
Mypanel mp = null;
public static void main(String[] args) {
new key();
}
public key(){
mp = new Mypanel();
this.add(mp);
this.addKeyListener(mp);//注册监听
this.setSize(300,400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
class Mypanel extends JPanel implements KeyListener {
int x = 10;
int y = 10;
@Override
public void paint(Graphics g) {
super.paint(g);
g.fillOval(x, y, 10, 10);
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
//System.out.println("键被按下"+e.getKeyChar());
if(e.getKeyCode()==KeyEvent.VK_DOWN){//点击向下的键
y++;
}else if(e.getKeyCode()==KeyEvent.VK_UP){//点击向上的键
y--;
}else if(e.getKeyCode()==KeyEvent.VK_LEFT){//点击向左的键
x--;
}else if(e.getKeyCode()==KeyEvent.VK_RIGHT){//点击向右的键
x++;
}
//调用repaint方法实现重画的功能
this.repaint();
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
}
}