2017-02-08 3 views
0

キーバインディングをカスタマイズするコードはここにありますが、これは機能していないようです。他のキー(私はMキーで試してみました)でも動作しますが、TABフォーカスを押すたびに "Hello"テキストのメッセージダイアログを表示するのではなく、次のコンポーネントに移動します。JButton用のTabキーのキーバインドを変更したい

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

Tabキーは、キーバインディングが処理される前に傍受されるようにフォーカスマネージャによって処理されます。

することで、ボタンを作成するときにフォーカスマネージャからTabキーを削除してください:

button.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, null); 
//button.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, null); 
関連する問題