jpanel上的Keylistener不起作用

时间:2013-07-11 10:36:00

标签: java swing jpanel keylistener

我正在尝试将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 个答案:

答案 0 :(得分:2)

一些有用的评论建议使用Key Bindings。如here所示,在Action的上下文中将KeyEvent.VK_Z指定为ACCELERATOR_KEY特别容易。如果要撤消对文本组件的更改,请参阅How to Write an Undoable Edit Listener;引用的TextComponentDemo说明了一个典型的UndoAction

相关问题