[Resolvido] Alterar conteudo dentro do evento caretUpdate

2 respostas
pequenoo

Olá pessoal estou fazendo um programa de datilografia!

e preciso verificar se a tecla está errada a cada tecla pressionada!

tentei fazer com o evento keyRealesed mas só que daí enquanto eu não soltar a tecla ele não executa o meu evento, ou seja repete várias vezes a letra e não verifica se a letra digitada está errada!

aí eu pesquisei e achei o caretUpdate, só que assim, olha o código:

private void tfLinhaCaretUpdate(javax.swing.event.CaretEvent evt) {                                    
    dig = tfLinha.getText();
    
    if (!dig.equals("")) {

        if (tempo_inicio == 0) {
            tempo_inicio = System.currentTimeMillis();
        }


        quant_dig = dig.length();
        pedaco = exer.substring(0, quant_dig);

        if (!pedaco.equals(dig)) {
            toques();
            java.awt.Toolkit.getDefaultToolkit().beep();
            tfLinha.setText(null);   // AQUI ESTÁ O PROBLEMA
            JOptionPane.showMessageDialog(null, "Digitação incorreta, favor recomeçar a linha!!!");

            taErros.setText(dig + "\n" + taErros.getText());
        }

        if (dig.equals(exer)) {
            toques();
            atual = Integer.parseInt(tfLinhas.getText());
            tfLinhas.setText(String.valueOf(atual + 1));
            tfLinha.setText(null);  // E AQUI TAMBÉM
            BDAluno.alteraLinha(Integer.parseInt(tfCod.getText()), tfLinhas.getText());
            if (tfLinhas.getText().equals("10")) {
                int exer_atu = Integer.parseInt(tfExer.getText()) + 1;
                BDAluno.alteraExer(Integer.parseInt(tfCod.getText()), String.valueOf(exer_atu));
                atualiza();
            }
        }
    }
}

quando der erro ou seja o usuário digitou a linha errada ele tem que mostrar o JOptionPane e limpar o jTextField só que ele dá Exception porque ele está entrando mais uma vez no caretUpdate e assim repetitivamente e para não travar o micro o Java da Exception....

como posso limpar o jTextField dentro do Evento...

Aguardo a ajuda de vocês!!!

2 Respostas

fjvasconcellos

Ola pequenoo, tente usar o evento KeyPressed

KeyRelease, trata mesmo só quando a telca é solta;

Abraços!

pequenoo

fjvasconcellos:
Ola pequenoo, tente usar o evento KeyPressed

KeyRelease, trata mesmo só quando a telca é solta;

Abraços!

mas só que daí para comparar eu não consigo comparar o valor total do textfield!!

eu teria que pegar o getKeyCode e comparar com a letra correspondente da variavel… seria muito complicado…

e então pesquisando mais e mais consegui resolver da seguinte forma:

Criei o seguinte método:

public void wrap1(final String text) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { tflinha1.setText(null); } }); }

e depois chamei ele dentro do evento caretUpdate!!

wrap1("");

quem me passou isso foi a Juliana…

valeu Ju…

um abração para todos e por terem ajudado aí!!!

Criado 4 de setembro de 2008
Ultima resposta 14 de set. de 2008
Respostas 2
Participantes 2