質問: new KeyTest(); field.addKeyListener(kl); ``` ご助力頂けますと幸いです。 宜しくお願い致します。
回答: 編集不可とした(デフォルトの)JComboBoxであればコンボボックスへ直接KeyListenerをaddKeyListenerで登録すればキーに関するイベントが捕捉できます。 しかし編集可能に設定すると前述の方法ではイベントを捕捉できません。理由はフォーカスがJComboBoxにないからです。なぜかというとJComboBoxの内部のエディター(JTextFieldみたいな機能を持ったエディターでデフォルトではjavax.swing.plaf.metal.MetalComboBoxEditorというクラスになるみたいです)がキー入力を処理するためにフォーカスを持つからです。 キーイベントを捕捉したいなら次のようにこの内部エディターの方へキーリスナーを登録しなければなりません。 ``` JComboBox combo = new JComboBox(new String[] { "a", "b", "c" }); combo.setEditable(true); Component editorComponent = combo.getEditor().getEditorComponent(); editorComponent.addKeyListener(new KeyAdapter() { //ここでは単なる例のためkeyPressed/keyTypedだけハンドリングしています @Override public void keyPressed(KeyEvent e) { System.out.printf("press code = 0x%x %