2017-02-08 24 views
0

Вот мой код для настройки привязки ключа, но это, похоже, не работает. Он работает для других ключей (я попробовал это с ключом M), но всякий раз, когда я нажимаю фокус TAB, переключается на следующий компонент вместо того, чтобы показывать диалог сообщения с текстом «Hello».Я хочу изменить привязку клавиш для клавиши Tab для JButton

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

Я бы быть очень осторожным об изменении действия «известных» ключевых штрихов, как вы влияете на опыт пользователя и комфорт – MadProgrammer

ответ

2

Tabbing обрабатывается диспетчером фокуса, поэтому клавиша Tab перехватывается до того, как обрабатываются ключевые привязки.

Попробуйте удалить ключ Tab от менеджера фокуса при создании кнопки:

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