1

我尝试了处理按键的常用方法:实现 KeyListener 并覆盖 keyPressed()。但是有很多swing组件,如果我在一个combobox上,combobox“认为”关键是他。我想主应用程序捕获按键,怎么做?

4

3 回答 3

4

您正在寻找此键绑定

于 2013-06-11T22:14:01.803 回答
3

你可以使用:

KeyEventPostProcessor kepp = new KeyEventPostProcessor() {
  @Override 
  boolean postProcessKeyEvent(KeyEvent e) {
     // handle key event globally
  }
};

KeyboardFocusManager kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager();
kfm.addKeyEventPostProcessor(kepp);
于 2013-06-11T22:21:04.160 回答
1

这比你想象的要难得多。例如,这是您必须付出的努力才能在其中包含 JFileChooser 的 Panel 上工作。 这是我过去问过的类似问题。我认为这将帮助您解决问题。您应该阅读给出的两个答案,因为它们都是有效的。

总而言之,您必须迭代所有 InputMap 和 InputMap 的父级,并清除您想要全局使用的键。然后将您的操作应用于 KeyMap。

你需要这个:

private static void clearInputMap(InputMap inputMap) {
    inputMap.clear();
    while ((inputMap = inputMap.getParent()) != null) {
        inputMap.clear();
    }
}
于 2013-06-11T22:19:03.917 回答