2013-12-20 109 views
0

当我键入,按下或释放键时,没有任何反应。我试图使用此关键字添加keylistener。当我添加一个鼠标监听器时,它工作得很好。KeyListener在JApplet中未触发

class MainApplet extends JApplet implements KeyListener{ 

MainApplet(){ addKeyListener(this) } 

public void init(){} 

public void start(){} 

public void keyTyped(KeyEvent e) { 
    // TODO Auto-generated method stub 
    System.out.print(e); 

} 
public void keyPressed(KeyEvent e) { 
    // TODO Auto-generated method stub 

} 
public void keyReleased(KeyEvent e) { 
    // TODO Auto-generated method stub 

} 

} 

回答

4

KeyEvents仅为具有焦点的组件生成。您的applet上没有组件具有焦点,所以组件不能接收KeyEvent。

尝试类似:

Component contentPane = getContentPane(); 
contentPane.setFocusable(true); 
contentPane.addKeyListener(this); 

真正的问题是什么是你想怎么办?当我们知道真正的需求时,可能会有更好的解决方案。通常情况下,您会使用Key Bindings来侦听给定组件上的KeyStroke。

+2

我知道密钥绑定即将到来,所以我现在就给你+1) – MadProgrammer

+0

@MadProgrammer,我们越来越可预测:) – camickr