Usar um botão ao pressionar a tecla enter,sem ter que clicar no botao

5 respostas Resolvido
programaçãoswingbotaojava
F

Galera é o seguinte,estou fazendo um programinha em Java Swing,que tem a função de cadastrar produtos em uma tabela,que futuramente vou vincular com o banco de dados ,mas o que eu quero fazer é o seguinte,assim que a pessoa entrar com os dados não precise com o mouse clicar no botão de adicionar e sim apertar enter a cada cadastro,para agilizar o cadastro,quem poder me ajudar,obrigado

5 Respostas

J

O Metodo teclasAtalho() deve ser chamado no construtor da classe para que seu funcionamento ocorra.

public void teclasAtalho() {
     rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "ENTER");
     rootPane.getRootPane().getActionMap().put("ENTER", new AbstractAction("ENTER") {
         @Override
         public void actionPerformed(ActionEvent e) {
             botaoDoEventoDesejado.doClick();//Aqui é onde ocorre o evento simulando o click do botão através da tecla ENTER
             // Mas o indicado é você criar um método para realizar essa tarefa e chama-lo onde for necessário.
         }
     });
}
F

deixa eu ver se eu entendi,então eu tenho que criar uma class e nela criar o método construtor e dentro dele criar um método com essas funções?

J
Solucao aceita

Acho que você está meio perdido…
Você já deve possuir essa classe criada, a qual você citou que tem a função de cadastrar os produtos certo?
Dentro desta sua classe você já tem o método construtor, basta colocar dentro desta mesma classe o método que te passei acima, feito isso você chama o método dentro do construtor da classe.

public class minhaView extends javax.swing.JFrame {  //Esta é sua classe (view)

    public minhaView() {//Este é o construtor da sua classe (view)
        initComponents();
        teclasAtalho();//Chamando o Método de teclas de atalho no construtor
    }

//Demais métodos e implementações da classe

public void teclasAtalho() {//Método criado dentro da sua classe (view)
     rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "ENTER");
     rootPane.getRootPane().getActionMap().put("ENTER", new AbstractAction("ENTER") {
         @Override
         public void actionPerformed(ActionEvent e) {
             botaoDoEventoDesejado.doClick();//Aqui é onde ocorre o evento simulando o click do botão através da tecla ENTER
             // Mas o indicado é você criar um método para realizar essa tarefa e chama-lo onde for necessário.
         }
     });
}

}
F

Muito obrigado Jonathan,consegui fazer funcionar aqui,estou começando em java,tenho uns 2 meses que estou mexendo todos os dias,fiz um curso de java básico e aprendi muita coisa no netbeans,e agora que conheci esse fórum vou expandir mais meus conhecimentos,obrigado pela ajuda,valeu

Enviando…

J

De nada, a galera é bem receptiva em relação a dúvidas, bons estudos!

Quando postar alguma dúvida sua, assim que conseguir resolver finalize o tópico marcando uma resposta como correta.

Criado 24 de setembro de 2017
Ultima resposta 26 de set. de 2017
Respostas 5
Participantes 2