这是我自定义键绑定的代码,但这似乎不起作用。它适用于其他键(我用键M尝试它)但每当我按TAB焦点转移到下一个组件而不是显示消息对话框" Hello"文本。
JButton button= new JButton();
button.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB,0),"sayHello");
button.getActionMap().put("sayHello", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,"Hello");
}
});
答案 0 :(得分:2)
Tabbing由焦点管理器处理,因此在处理Key Bindings之前会截取Tab键。
创建按钮时尝试从焦点管理器中删除Tab键:
button.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, null);
//button.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, null);