0

アプリにグローバル キー リスナーを追加したかったのですが、正常に動作しますが、アプリの 0 番目のコントロール (コンボボックス) にはまだ入力フォーカスがあり、キープレスにも応答します。

KeyEventPostProcessor pp = new KeyEventPostProcessor() {
    public boolean postProcessKeyEvent(KeyEvent e) {
        return true;
    }
};

DefaultKeyboardFocusManager.getCurrentKeyboardFocusManager().
    addKeyEventPostProcessor(pp);

オーバーライドできる「preProcessKeyEvent()」メソッドのようなものはありますか?これにより、子コントロールにイベントを処理させたくない場合にイベントが表示されなくなりますか?

ありがとう

4

1 に答える 1

0

以下を使用して、KeyEvents のディスパッチを防ぐことができます。

KeyEventDispatcher dispatcher = new KeyEventDispatcher() {

    @Override
    public boolean dispatchKeyEvent(KeyEvent e) {
        return true;
    }
};
DefaultKeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(dispatcher);

しかし、通常はそのようなことを行う必要はありません。適切なKeyBindingを使用すると、必要な動作のほとんどを実現できるはずです。

于 2012-06-22T07:09:14.007 に答える