Olá pessoal, uso o seguinte código para a tecla ENTER simular o TAB e ir passando pelos campos do formulário:
// Enter simula tecla Tab
HashSet conj = new HashSet(getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));
conj.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_ENTER, 0));
setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, conj);
Porém quando o foco chegar no botão grava dados, quero que quando seja clicado o ENTER ele pressione e execute a ação gerado pelo evento do botão, porém ele passa o foco para outro componente, como posso fazer isso?
Como as teclas são herdadas, você pode efetuar um “override” desse comportamento exatamente nessa tecla que precisa responder ao ENTER como sendo ENTER e não TAB. Você precisaria fazer algo parecido com o que você fez, mas ao contrário:
HashSet conj = new HashSet(jbutton1.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));
conj.remove(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_ENTER, 0));
jbutton1.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, conj);
DISCLAIMER - não testei, por isso não sei se funciona
Para funcionar tive que difinir o botão como padrão da janela ao pressionamento do ENTER juntamente com o código que você postou.
Ficou assim:
HashSet con = new HashSet(jButton1.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));
con.remove(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_ENTER, 0));
jButton1.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, con);
getRootPane().setDefaultButton(jButton1);
Obrigado, vou usar isso em um protótipo que estou fazendo. (Não sou especialista em Swing - e é por isso que estou sempre atento ao que as pessoas precisam, porque vou precisar disso também.)