0

キーリスナーを 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 を追加しようとしていますが、うまくいきません。

4

1 に答える 1

2

Key Bindingsの使用を提案する有益なコメントがいくつかあります。ここに示すように、 KeyEvent.VK_ZanACCELERATOR_KEYのコンテキストで anを指定するのは特に簡単Actionです。テキスト コンポーネントへの変更を元に戻す場合は、「元に戻すことができる編集リスナーを作成する方法」を参照してください。そこにTextComponentDemo引用されているのは、典型的なUndoAction.

于 2013-07-11T13:43:41.413 に答える