我想更改JButton的Tab键的键绑定

时间:2017-02-08 17:18:30

标签: java swing jbutton key-bindings

这是我自定义键绑定的代码,但这似乎不起作用。它适用于其他键(我用键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");
    }
});

1 个答案:

答案 0 :(得分:2)

Tabbing由焦点管理器处理,因此在处理Key Bindings之前会截取Tab键。

创建按钮时尝试从焦点管理器中删除Tab键:

button.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, null);
//button.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, null);