2013-07-11 50 views
0

我想要一個的KeyListener添加到我的JPanel,但即使在此之後,它不會工作:的KeyListener上的JPanel將無法正常工作

put.setFocusable(true); 
    put.requestFocusInWindow(); 
    KeyboardHandler keyhandler=new KeyboardHandler(); 
    put.addKeyListener(keyhandler); 
} 
private class KeyboardHandler implements KeyListener{ 
    public void keyPressed(KeyEvent e) { 
    System.out.println("OVDE ZZZ"); 
    if(e.getKeyCode()==17) ctrl=true; 
     if(e.getKeyCode()==90) z=true; 
     if(ctrl && z){ 
      if (UndoBrojac==0) JOptionPane.showMessageDialog(null, "You can't undo that"); 
      else{ 
       UndoBrojac--; 
       put.setUndo(UndoBrojac); 
      } 
     } 

} 

public void keyReleased(KeyEvent e){ 
    if (e.getKeyCode()==17) ctrl = false; 
    if (e.getKeyCode()==90) z = false; 
} 

    public void keyTyped(KeyEvent e) {} 
} 

我想補充CTRL + Z,但它不起作用。

+1

您應該使用'KeyEvent.VK_CONTROL'和'KeyEvent.VK_Z'來避免魔術常量。 – Dahaka

+0

這不是問題,它甚至不會得到keypressed –

+3

對於Swing,通常使用基於AWT的更低級別的KeyListener上的鍵綁定。有關如何使用它們的詳細信息,請參閱[如何使用鍵綁定](http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html)。 –

回答