Como executar uma ação apertando a tecla Enter ?

Java

11/11/2011

Eu fiz uma tela de login, porem quando eu termino de colocar usuário e senha eu queria que quando apertasse a tecla Enter o login ficasse valido ao invés de clicar com o mouse no botão entrar. Eu tenho um campo de usuário e outro de senha e também tenho um botão de entrar e outro de sair. O que devo fazer ? ir na opção KeyPressed do campo senha? e qual seria o código para funcionar a tecla [b]Enter [/b]? eu quero quando o terminar de digitar a senha e já pressionar enter. me ajudem.
Jonilson N

Jonilson N

Curtidas 0

Respostas

Carlos Heuberger

Carlos Heuberger

11/11/2011

[quote="Rapadura"]Eu fiz uma tela de login, porem quando eu termino de colocar usuário e senha eu queria que quando apertasse a tecla Enter o login ficasse valido ao invés de clicar com o mouse no botão entrar. Eu tenho um campo de usuário e outro de senha e também tenho um botão de entrar e outro de sair. O que devo fazer ? ir na opção KeyPressed do campo senha? e qual seria o código para funcionar a tecla [b]Enter [/b]? eu quero quando o terminar de digitar a senha e já pressionar enter. me ajudem.
adicione um ActionListener ao campo e no método actionPerformed desse faz o que é para ser executa ao apertar o [b]Enter[/b] [[]]
GOSTEI 0
Carlos Heuberger

Carlos Heuberger

11/11/2011

[quote="Rapadura"]Num ajudou ainda não.
essa sua afirmação também não ajuda. pelo menos mostra o que você tentou fazer, e onde está tendo problema.
GOSTEI 0
Marcos Wellington

Marcos Wellington

11/11/2011

posta o código ae do q vc tem
GOSTEI 0
Mathews Motta

Mathews Motta

11/11/2011

[quote="Rapadura"]Num ajudou ainda não.
Amigo, primeiramente ninguém aqui é seu empregado. Se o sr. está com problemas, precisa de ajuda, peça encarecidamente e TORÇA para alguém disposto tentar analisar seu problema e tentar te ajudar. Ele te deu uma solução e você não conseguiu implementá-la. Por que não conseguiu? Não encaixou a função? DE QUE FORMA VOCÊ TENTOU INCLUIR A SOLUÇÃO CITADA PELO SIMU EM SEU CÓDIGO? Não sabe implementar o que foi citado? Pergunte direito e pelo menos finja que se importa em dar um feedback construtivo.
GOSTEI 0
Jonilson N

Jonilson N

11/11/2011

tudo bem desculpe se estou sendo grosseiro, eu achei que dava pra entender a minha duvida mas ta aqui o código
    if (evt.getKeyCode() == KeyEvent.VK_ENTER){   
               
        } 
No campo senha eu fui lá em [b]Eventos>Key>KeyPressed[/b] pra ver se funcionava, mas não deu certo por isso peço que alguem me ajude.
GOSTEI 0
Carlos Heuberger

Carlos Heuberger

11/11/2011

[quote="Rapadura"]tudo bem desculpe se estou sendo grosseiro, eu achei que dava pra entender a minha duvida mas ta aqui o código
    if (evt.getKeyCode() == KeyEvent.VK_ENTER){   
               
        } 
No campo senha eu fui lá em [b]Eventos>Key>KeyPressed[/b] pra ver se funcionava, mas não deu certo por isso peço que alguem me ajude.
Já tinha entendido (acho) o que você quer alcançar! Mas o que fez não está nem um pouco parecido com o que eu escrevi. [quote="simu"][quote="Rapadura"] [...]
adicione um ActionListener ao campo e no método actionPerformed desse faz o que é para ser executa ao apertar o [b]Enter[/b] [[]]
senha.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent ev) {
        // código a ser executado se pressionar 
        // ENTER no campo 'senha'
        doLogin();  // EXEMPLO
    }
});
se tiver um botão (não vi no código), pode usar o mesmo Listener dele... [i]e agora vou cuidar da minha vida - tem um planador para dar manutenção[/i] - boa sorte -
GOSTEI 0
Mathews Motta

Mathews Motta

11/11/2011

[quote="Rapadura"]tudo bem desculpe se estou sendo grosseiro
Sem problemas. Me desculpa a forma como falei também. Mas foi bom para servir como exemplo para eventos futuros. Veja que você simplesmente falou "Não ajudou", mas na verdade nem tinha tentado colocar o que ele ensinou. Sacou?
GOSTEI 0
Douglas Eric

Douglas Eric

11/11/2011

Elmatador. Se você postar aqui também, falando pra mim banir o Mathews.... vão ter consequências.
GOSTEI 0
Douglas Eric

Douglas Eric

11/11/2011

Acho que entendi seu problema. Também estou trabalhando em um programa onde é necessário digitar login e senha e depois clicar no botão "Logar". A solução, para o meu caso, é bem simples... Dentro do seu método que monta a janela (na classe que contém seu JFrame), basta adicionar o código:
meuFrame.getRootPane().setDefaultButton(btLogin);
Espero ter ajudado! :)
GOSTEI 0
Douglas Eric

Douglas Eric

11/11/2011

**Complementando... Para que seu botão execute alguma ação depois de pressionar "Enter" no teclado, [b]é[/b] necessário que você tenha um [i]ActionListener[/i] atribuído a ele, como mostrou o simu:
btLogin.addActionListener(new ActionListener() {  
    @Override  
    public void actionPerformed(ActionEvent ev) {  
        // código a ser executado se pressionar   
        // ENTER no campo 'senha'  
        doLogin();  // EXEMPLO  
    }  
});  
GOSTEI 0
Douglas Eric

Douglas Eric

11/11/2011

tem um problema nessa história. Pelo menos comigo. Quando eu coloco um actionListener em um botão, ele só funciona se eu clicar. Se eu apertar o enter com ele selecionado, não! mas se eu apertar a barra de espaço, ae funciona. Por que será isso??
GOSTEI 0
Douglas Eric

Douglas Eric

11/11/2011

:arrow: Funciona perfeitamente aqui...
private JButton login_bt;

public TelaLogin() {
        //... interface...
	login_bt = new JButton("Logar");
	login_bt.addActionListener(this);
        //..... mais interface
	janela.getRootPane().setDefaultButton(login_bt);
}
A classe já implementa [i]ActionListener[/i], dentro do [i]actionPerformed()[/i] faço verificação e tals...
GOSTEI 0
Douglas Eric

Douglas Eric

11/11/2011

meus actionlisteners nos jbuttons só funcionam com a barra de espaço :shock: :shock: :shock:
GOSTEI 0
Douglas Eric

Douglas Eric

11/11/2011

[quote="sekkuar"]meus actionlisteners nos jbuttons só funcionam com a barra de espaço :shock: :shock: :shock:
Realmente muito útil vc ter uma variedade imensa de actionlisteners só podendo apertar espaço !! Hahahaha!
GOSTEI 0
Douglas Eric

Douglas Eric

11/11/2011

[quote="sekkuar"]tem um problema nessa história. Pelo menos comigo. Quando eu coloco um actionListener em um botão, ele só funciona se eu clicar. Se eu apertar o enter com ele selecionado, não! mas se eu apertar a barra de espaço, ae funciona. Por que será isso??
deve estar usando o Look&Feel Metal ou Ninbus... tenta um outro (Motif, Windows, ...) [[]]
GOSTEI 0
Douglas Eric

Douglas Eric

11/11/2011

[quote="Rapadura"]ir na opção KeyPressed do campo senha? e qual seria o código para funcionar a tecla [b]Enter [/b]?
public void keyPressed(KeyEvent ke) {
    if (ke.getKeyCode() == KeyEvent.VK_ENTER) {
        // pressionou enter
    }
}
GOSTEI 0
Douglas Eric

Douglas Eric

11/11/2011

[quote="sekkuar"]meus actionlisteners nos jbuttons só funcionam com a barra de espaço :shock: :shock: :shock:
Veja este link: [url]http://download.oracle.com/javase/tutorial/uiswing/misc/keybinding.html[/url] [quote="MathewsMotta"] Realmente muito útil vc ter uma variedade imensa de actionlisteners só podendo apertar espaço !! Hahahaha!
Não ha variedade, a interface ActionListener é uma só. O que acontece é que o ActionMap de cada componente é que determina quais ações notificam as instancias de ActionListener registradas para o componente
GOSTEI 0
Douglas Eric

Douglas Eric

11/11/2011

e o ActionMap padrão (default) depende do Look&Feel...
GOSTEI 0
Douglas Eric

Douglas Eric

11/11/2011

[quote="simu"]e o ActionMap padrão (default) depende do Look&Feel...
Deve ser. Nas minhas aplicações eu uso o look and feel [url=http://www.jtattoo.net/]JTattoo[/url]. Mas, se eu alterar o ActionMap (link que o starosk me mandou), quando o look and feel mudar, ele vai ser sobreescrito de novo? Pois, eu tenho um menu para o usuário escolher entre os diferentes look and feels e themes da biblioteca.
GOSTEI 0
Douglas Eric

Douglas Eric

11/11/2011

[quote="staroski"] Não ha variedade, a interface ActionListener é uma só. O que acontece é que o ActionMap de cada componente é que determina quais ações notificam as instancias de ActionListener registradas para o componente
Na verdade o que eu quis dizer é que você pode fazer um actionlistener diferente para cada botão do teclado.
GOSTEI 0
Douglas Eric

Douglas Eric

11/11/2011

[quote="MathewsMotta"][quote="staroski"] Não ha variedade, a interface ActionListener é uma só. O que acontece é que o ActionMap de cada componente é que determina quais ações notificam as instancias de ActionListener registradas para o componente
Na verdade o que eu quis dizer é que você pode fazer um actionlistener diferente para cada botão do teclado.
Um actionListener para cada botão do teclado? O_O
GOSTEI 0
Douglas Eric

Douglas Eric

11/11/2011

[quote="sekkuar"][quote="simu"]e o ActionMap padrão (default) depende do Look&Feel...
Deve ser. Nas minhas aplicações eu uso o look and feel [url=http://www.jtattoo.net/]JTattoo[/url]. Mas, se eu alterar o ActionMap (link que o starosk me mandou), quando o look and feel mudar, ele vai ser sobreescrito de novo? Pois, eu tenho um menu para o usuário escolher entre os diferentes look and feels e themes da biblioteca.
melhor é testar, pode ser que uma vez alterado, o ActionMap não volta ao padrão (mudanças não são apagadas) [[]]
GOSTEI 0
Douglas Eric

Douglas Eric

11/11/2011

Desculpem por ressuscitar um tópico antigo, mas estava com o mesmo problema e uma das primeiras páginas que me apareceu foi essa. Resolvi meu problema da seguinte maneira: Utilizei a IDE Netbeans. Clicando com o botão direito no campo desejado selecionei a opção Eventos > Key > KeyPressed. Toda vez que uma tecla for pressionada nesse campo, essa função será chamada.
private void TabelaKeyPressed(java.awt.event.KeyEvent evt) {
        
        if (evt.getKeyCode() == KeyEvent.VK_SPACE){
            //O botão desejado foi pressionado então só preciso
            //inserir o código aqui, no caso, execute o código do botão que realiza o login
        }        
    }  
 
Observe que a função recebe como parâmetro o evt, que contém todas as informações da tecla que acabou de ser pressionada. Tudo que precisa fazer é comparar o código dessa tecla (evt.getKeyCode()) com a da tecla que você deseja. No meu caso, Utilizei o KeyEvent.VK_SPACE, que retorna um inteiro correspondente à tecla desejada, no caso o espaço.
GOSTEI 0
POSTAR