2013-12-20 65 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