JDialog

5 respostas
D

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.

5 Respostas

java_Regi

KeyListener não resolve seu problema?

Até!

R

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. */
D

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.

T

KeyListener não resolve o problema. Você precisa usar uns truques com InputMap, ActionMap e KeyStroke.

http://www.exampledepot.com/egs/java.awt/focus_WindowFocus.html?l=rel
http://www.exampledepot.com/egs/java.awt/focus_ChildFocus.html

java_Regi

vc adicionou o evento nos seus TextField??

SEUTEXTFIELD.addKeyListener( this );

Criado 9 de março de 2007
Ultima resposta 9 de mar. de 2007
Respostas 5
Participantes 4