0

次のコードは、特定の JTextField (timeStep と呼ばれる) でタブが押されたことをプログラムが検出し、TextArea (textAreaInsructions と呼ばれる) にメッセージを表示することになっていましたが、機能していないようです。理由を教えてください。

timeStep.setFocusTraversalKeys(
                KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, Collections.EMPTY_SET);

        timeStep.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent evt) {
                if(evt.getKeyCode() == KeyEvent.VK_TAB){
                    instruction = "Enter a real number time step";
                    textAreaInstructions.setText(instruction);
                    /* If you want to change the focus to the next component */
                    //nextJComponent.grabFocus();
            }
            }
        });
4

1 に答える 1

1

TAB キーは、フィールド フォーカス コントロールに関連付けられているため、ほとんどの swing コンポーネントで既に使用されています。それを処理する方法は複数あります。別の方法を試すことができます。

TAB キーを明示的にリッスンする代わりに、FocusListener を使用して、フォーカスがテキスト フィールドから離れたことを簡単に検出できます。

また

キーボード アクションを登録します。 JComponent.registerKeyboardAction(action, keystroke, WHEN_IN_FOCUSED_WINDOW); TAB キーの場合。

于 2013-10-30T16:52:22.603 に答える