我正在制作一个小程序来测试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");
}
}
答案 0 :(得分:1)
此问题的另一个解决方案是在main方法中创建一个实例,例如:
KeyListener() listener = new Game_Main();
然后你可以切断线:
this.addKeyListener(this);
从构造函数并将其放在main方法中。然后将第一个更改为帧,将第二个更改为听众,它将正常工作。您只需向框架注册或输入监听器即可执行该事件。