demys
#1
Tenho um JDialog com dois campos (login e senha) e dois botoes (Ok e Cancelar).
Gostaria que o botão OK fosse acionado pela tecla ENTER e o Cancelar pela tecla ESC independentemente de os botoes possuirem o foco ou nao.
Qual evento devo programar para dar esta funcionalidade.
KeyListener não resolve seu problema?
Até!
Para funcionar a tecla enter faça o seguinte:
this.getRootPane().setDefaultButton(buttonOK);
Para a tecla ESC faça o seguinte:
protected JRootPane createRootPane() {
ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent event) {
/* Coloque aqui a ação desejada. */
} /* Finaliza o método actionPerformed. */
}; /* Finaliza a classe interna abstrata ActionListener. */
JRootPane rootPane = new JRootPane();
KeyStroke keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
rootPane.registerKeyboardAction(actionListener, keyStroke,
JComponent.WHEN_IN_FOCUSED_WINDOW);
return rootPane;
} /* Finaliza o método createRootPane. */
demys
#4
Gostaria de capturar o pressinamento do enter e do esc no nivel do JDialog, mas ja usei o seguinte codigo no KeyTyped, KeyPressed e KeyReleased:
if (evt.getKeyCode()==evt.VK_ENTER) login();
e nenhum funcionou.
vc adicionou o evento nos seus TextField??
SEUTEXTFIELD.addKeyListener( this );