获取我的全局关键监听器来阻止控件响应事件?

时间:2012-06-22 03:52:38

标签: swing

我想在我的应用程序中添加一个全局键监听器,它运行正常但我的应用程序中的第0个控件(组合框)仍然具有输入焦点并且还响应按键:

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

DefaultKeyboardFocusManager.getCurrentKeyboardFocusManager().
    addKeyEventPostProcessor(pp);

是否有类似“preProcessKeyEvent()”方法的东西我可以覆盖,这会阻止子控件在我不希望它们处理时看到该事件?

由于

1 个答案:

答案 0 :(得分:0)

您可以使用以下命令来阻止调度KeyEvents:

KeyEventDispatcher dispatcher = new KeyEventDispatcher() {

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

但是你通常不需要执行这样的事情。使用适当的KeyBindings,您应该能够实现大部分必需的行为。