0

JTextFieldですべてのキーボード入力(strg、alt、tabも)をトリガーしたい。

super.addKeyListener(new KeyListener() {

    @Override
    public void keyTyped(KeyEvent arg0) {
        System.out.println(arg0.getKeyChar());
    }

    @Override
    public void keyReleased(KeyEvent arg0) {

    }

    @Override
    public void keyPressed(KeyEvent arg0) {

    }
});

KeyListenerは、strg、alt、/およびtabなどのキーボード入力をトリガーしません。

この場合の解決策はありますか?

これは、ユーザーがキーを変更できる設定画面で必要です。キーは、前に進むなどのアクションで押す必要があります。

4

1 に答える 1

1

これは私にとってはうまくいきTabます。キーをキャッチするためにトラバーサルを無効にする必要がありました。また、、、などのkeyTyped()キーに対してイベントが呼び出されることはないことに注意してください。ただし、またはイベントを使用すると、それらをキャッチできます。AltShiftControlkeyPressed()keyReleased()

public class Scribble extends JFrame implements KeyListener {

    public Scribble(){
        this.setLayout(new BorderLayout());
        JTextField field = new JTextField();
        field.addKeyListener(this);
        /*
         * Disable tab, so we can catch it
         */
        field.setFocusTraversalKeysEnabled(false);
        this.add(field, BorderLayout.CENTER);
        this.pack();
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);
        this.setVisible(true);
    }

    public void keyTyped(KeyEvent e) {
        System.out.println("Key typed: " + e.getKeyCode());
    }

    public void keyPressed(KeyEvent e) {
        System.out.println("Key pressed: " + e.getKeyCode());
    }

    public void keyReleased(KeyEvent e) {
        System.out.println("Key released: " + e.getKeyCode());
    }

    public static void main(String[] args) {
        new Scribble();
    }
}
于 2013-02-04T12:53:07.327 に答える