Teclas ENTER/TAB

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?

Agradeço desde já as sugestões.

[]´s

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 :frowning:

Obrigado pela dica thingol, foi muito útil.

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 :wink:

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.)