web-dev-qa-db-ja.com

Javaで押された/入力されたTABキーを聞くにはどうすればよいですか?

    private void jTextField1KeyPressed(Java.awt.event.KeyEvent evt)
    {
        //cant capture my TAB?
        System.out.print(evt.getKeyChar());

    }

Java guiでフォーカスリスニングテクニックを使用せずにタブキーをキャプチャする最も簡単な方法は何ですか?

25
stackoverflow

VK_TABはタブ定数です。

ただし:_No Tab key-pressed or key-released events are received by the key event listener. This is because the focus subsystem consumes focus traversal keys, such as Tab and Shift Tab._

参照: http://docs.Oracle.com/javase/tutorial/uiswing/events/keylistener.html

これを解決するには、キーイベントを発生させているコンポーネント(TextAreaなど)に以下を適用します。

.setFocusTraversalKeysEnabled(false)

このメソッドを使用して、フォーカストラバーサルを明示的に処理する必要があります。または、 KeyEventDispatcher クラスを使用して、すべてのキーイベントを事前に聞くことができます。

45
Peter

編集可能なJComboBoxの場合、これは私のために働きました:

    txt.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, Collections.emptySet());
    txt.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent event) {
        if (event.getKeyChar() == KeyEvent.VK_TAB) {

        }
       }
    });
0
realpac