KeyListener无法在对象中工作

时间:2014-05-08 21:40:35

标签: java swing keylistener

我遇到了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);

    }

}

1 个答案:

答案 0 :(得分:2)

KeyListener非常易变。它注册的组件必须具有可聚焦性并具有焦点。组件可以通过多种方式失去焦点,或者根据系统的不同,在请求时无法获得焦点。

相反,使用key bindings API,因为它允许您配置将触发关键事件的焦点级别

相关问题