Evento keypress

7 respostas Resolvido
java
D

Tenho esse codigo:

if (evt.getKeyCode() == KeyEvent.VK_ENTER){

btnCadastrarActionPerformed();

}

meu problema é a implementação do botão que não estou conseguindo fazer. Alguém tem alguma dica?

OBS: Já pesquisei bastante mas não estou encontrando nada.

7 Respostas

rodriguesabner

Boa noite Digo.

Onde você quer colocar isso? Num campo de texto? Se for, coloca isso dentro um evento de KeyReleased do campo de texto que vc quer

D

Sim, no caso em um txtArea. O código original:

private void txtareaOBSKeyPressed(java.awt.event.KeyEvent evt) {

if (evt.getKeyCode() == KeyEvent.VK_ENTER){

btnCadastrarActionPerformed(evt);

}

}

Agora segue o KeyRealeased:

private void txtareaOBSKeyReleased(java.awt.event.KeyEvent evt) {

if (evt.getKeyCode() == KeyEvent.VK_ENTER){
        btnCadastrarActionPerformed(evt);
    } 
}

Em ambos ele dá erro no parâmetro evt

staroski

Posta o método btnCadastrarActionPerformed

D

Aqui está:

private void btnCadastrarActionPerformed(java.awt.event.ActionEvent evt) {

try {

Reagente reagente = new Reagente();

ReagenteJpaDAO dao = new ReagenteJpaDAO();
reagente.setNome(txtReagente.getText());
        reagente.setConc(txtConcentracao.getText());
        reagente.setResp(txtResponsavel.getText());
        reagente.setModulo(Integer.parseInt(txtModulo.getText()));
        reagente.setTipo(txtTipo.getText());
        reagente.setQuant(Integer.parseInt(txtQuant.getText()));
        reagente.setObs(txtareaOBS.getText());

        //Formatação das datas
        SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
        Date dtprep = format.parse(dtPreparo.getText());
        Date dtvalid = format.parse(dtValidade.getText());
        reagente.setDtPrep(dtprep);
        reagente.setDtValid(dtvalid);

        

        dao.persist(reagente);

       
        limpar();
    } catch (ParseException ex) {
        Logger.getLogger(Index.class.getName()).log(Level.SEVERE, null, ex);
    }
    txtReagente.grabFocus();
}
rodriguesabner

Vc quer simular o click do botão?

staroski
Solucao aceita

O método btnCadastrarActionPerformed espera receber um objeto do tipo ActionEvent, mas você está tentando passar um KeyEvent.

De qualquer forma, não é legal programar dessa forma, não implemente a lógica dentro dos tratadores de evento.

Crie métodos com nomes legíveis para realizar suas operações e chame esses métodos nos tratadores de eventos, veja o exemplo abaixo.

Crie um método para realizar seu cadastro:

private void cadastrar() {
    try {
        Reagente reagente = new Reagente();
        ReagenteJpaDAO dao = new ReagenteJpaDAO();

        reagente.setNome(txtReagente.getText());
        reagente.setConc(txtConcentracao.getText());
        reagente.setResp(txtResponsavel.getText());
        reagente.setModulo(Integer.parseInt(txtModulo.getText()));
        reagente.setTipo(txtTipo.getText());
        reagente.setQuant(Integer.parseInt(txtQuant.getText()));
        reagente.setObs(txtareaOBS.getText());

        //Formatação das datas
        SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
        Date dtprep = format.parse(dtPreparo.getText());
        Date dtvalid = format.parse(dtValidade.getText());
        reagente.setDtPrep(dtprep);
        reagente.setDtValid(dtvalid);

        dao.persist(reagente);

        limpar();
    } catch (ParseException ex) {
        Logger.getLogger(Index.class.getName()).log(Level.SEVERE, null, ex);
    }
    txtReagente.grabFocus();
}

Em seguinda chame esse método nos seus tratadores de evento:

private void txtareaOBSKeyReleased(java.awt.event.KeyEvent evt) {
    if (evt.getKeyCode() == KeyEvent.VK_ENTER){
        cadastrar();
    } 
}  

private void btnCadastrarActionPerformed(java.awt.event.ActionEvent evt) {
    cadastrar();
}
D

Obrigado funcionou direitinho. Tem razão, ainda estou cursando e tenho muito á aprender.

Edit: Estava tentando aplicar uma logica que meu professor tinha me passado em C#, não soube aplicar a logica muito bem ao que me parece.

Criado 1 de abril de 2019
Ultima resposta 2 de abr. de 2019
Respostas 7
Participantes 3