Estou tentando acionar o ActionPerformed do botão pressionar a tecla enter… da forma que está abaixo funciona nos botoes que estão dentro de um painel por exemplo, agora em botões que estão dentro de uma JToolBar, não funciona!
Gostaria também de fazer alguma coisa mais genérica para esse caso, valendo para qualquer botão;
((JButton).doClick(); // tentei isso mais não funcionou btnIncluir.doClick(); //aqui deu certo!
Encontrei vários casos no fórum, porém não achei nenhum que solucionasse o meu problema…
public void keyPressed(KeyEvent e) {
int tecla = e.getKeyCode();
if ( tecla == KeyEvent.VK_ENTER && ( ( JButton) e.getSource() ).hasFocus() )
btnIncluir.doClick();
}
2º problema: Não sei porque mas só executa um dos dois… o que eu coloco primeiro funciona, neste caso os JTextField… quando chega no JComboBox não entra na rotina do Combo…
Alguém tem alguma idéia do que pode ser feito neste caso!
Obrigado
Diego
P
patrizio.cannoni
Tenta assim:
JButtonbutton=newJButton("OK");registraEnterNoBotao(button);/** * Mapeia a action da barra de espaço na tecla enter.<br> * O botão é passado por referência. */privatevoidregistraEnterNoBotao(JButtonb){b.registerKeyboardAction(b.getActionForKeyStroke(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE,0,false)),KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0,false),JComponent.WHEN_FOCUSED);b.registerKeyboardAction(b.getActionForKeyStroke(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE,0,true)),KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0,true),JComponent.WHEN_FOCUSED);}
Assim o botão que tem o foco é acionado pela tecla de espaço e também pela tecla de ENTER.
Chama o método passando um JButton pra ele. O método altera o mapeamento das tecla SPACE e ENTER por referência.