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