KeyListener不工作/未被调用?

时间:2013-12-14 18:21:13

标签: java swing awt jlabel keylistener

我正在制作一个小程序来测试KeyListener,使主类,只有类,实现它。我开始在类中创建一个类,实现键监听器,并添加以下行:

this.addKeyListener(new Handler());

但是这没有用,所以我使主类实现了键监听器,但仍然没有调用KeyPressed / typed / release。我已经把课程缩短了很多,所以这里是:

public class Game_Main extends JPanel implements KeyListener{

JLabel ship = new JLabel();
JLabel bg = new JLabel();

static JFrame frame;

public Game_Main(){
    setPreferredSize(size);

    this.addKeyListener(this);


}

public static void main(String[] args){
    Game_Main g = new Game_Main();
    frame = new JFrame();

    frame.setPreferredSize(size);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(g);
    frame.setVisible(true);

}

    public void keyTyped(KeyEvent e) {
        System.out.println("ds");
    }

}

1 个答案:

答案 0 :(得分:1)

此问题的另一个解决方案是在main方法中创建一个实例,例如:

KeyListener() listener = new Game_Main();

然后你可以切断线:

this.addKeyListener(this);
从构造函数

并将其放在main方法中。然后将第一个更改为帧,将第二个更改为听众,它将正常工作。您只需向框架注册或输入监听器即可执行该事件。