我遇到了KeyListener的问题。我创建了类gra
,其中完整的代码需要在构造函数中玩游戏俄罗斯方块我只需要添加KeyListener。在其他类Menu
中,我创建了对象Gra gra = new Gra()
并在满足条件gra.start(g);
时对其进行了碰撞但是当我在类Gra
时,KeyListener无法正常工作。请帮助我解决这个问题。
他是gra gra的代码
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;
import javax.swing.JPanel;
//@SuppressWarnings("serial")
public class Gra extends JPanel implements KeyListener{
public Gra(){
addKeyListener(this);
setFocusable(true);
requestFocus();
repaint();
}
public void start(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
setFocusable(true);
requestFocus();
repaint();
}
@Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
System.err.println("sdfafs");
char c = arg0.getKeyChar();
System.err.println(c);
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
char c = arg0.getKeyChar();
System.err.println(c);
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
char c = arg0.getKeyChar();
System.err.println(c);
}
}
答案 0 :(得分:2)
KeyListener
非常易变。它注册的组件必须具有可聚焦性并具有焦点。组件可以通过多种方式失去焦点,或者根据系统的不同,在请求时无法获得焦点。
相反,使用key bindings API,因为它允许您配置将触发关键事件的焦点级别