我有一个包含各种文本框和表格等组件的JFrame, 希望安装一个热键功能,在窗口打开的时候应用该功能(类似于菜单加速器快捷方式)。以下代码大部分情况下可以实现,不管哪个字段或控件拥有焦点,我的操作都会被调用:
String MY_GLOBAL_ACTION_TRIGGER = "hotKey";
InputMap im = getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
KeyStroke ks = KeyStroke.getKeyStroke('`');
im.put(ks, MY_GLOBAL_ACTION_TRIGGER);
ActionMap am = getRootPane().getActionMap();
am.put(MY_ACTION_TRIGGER, new AbstractAction() { public void actionPerformed() ... });
然而,按键操作并未被消费,我仍然在文本框中插入了反引号。一旦我的操作被调用,我该如何防止按键操作传播到文本框中?