Ajuda com evento keyDown(Event evt, int key)

Prezados Colegas, estou com a seguinte dúvida: preciso criar um método que detecte que tecla foi pressionada pelo usuário e dependendo do valor desta tecla, disparar um outro evento, ou “mover-se” pelo índice de um array.

Pesquisando, encontrei um método conforme abaixo:

public boolean keyDown(Event evt, int key) {
System.out.println("Valor ASCII: " + key);
System.out.println("Caracter: " + (char)key);
return true;
}

Acontece que eu não preciso de saída em tela na minha aplicação, e como modificar e utilizar este recurso dentro de um método main(String[] args) ?

Exemplo em pseudocódigo:

Leia tecla;

Início de Caso
Caso tecla = 13:
disparar o evento x1, passando como parâmetros x, y, z;
Caso tecla = 32:
disparar o evento x2, passando como parâmetros r, s;
Caso qualquer outra tecla:
disparar o evento aviso99 e voltar a ler tecla novamente;
Fim de Caso

public static void main(String[] args){
tecla = “algo que seja a leitura da tecla”
switch (tecla) {
case 13:
contador–;
break;
case 32:
contador++;
default:
// alguma coisa padrão;
}
}

Agora, como se usa este keyDown neste contexto?

Agradecendo antecipadamente qualquer ajuda,

atenciosamente

Augusto Cesar

Tu precisa utilizar um KeyListener:

public class Damnit impements KeyListener {
    private int timer = 0;

    public void keyPressed(KeyEvent ke) {
        System.out.println("Pressed: " + key.getChar());
    }
    public void keyTyped(KeyEvent ke) {
        System.out.println("Typed: " + key.getChar());
    }
    public void keyReleased(KeyEvent ke) {
        System.out.println("Released: " + key.getChar());
    }

    private void setUp() {
        while (timer < 180) {
            try {
                Thread.sleep(1000);
                 timer++;
            } catch (Exception e) { }
        }        
    }

    public static void main(String[] args) {
        new Damnit().setup();
    }
}

O programa vai ficar executando por 3 min. T+

Bom dia, amigo! Primeiro, gostaria de agradecer a sua ajuda, valeu!

Fiz as seguintes inclusões / alterações no seu código, porém ndada acontece quando pressione alguma tecla… :sad: :

import java.awt.event.;
import java.util.Timer.
;

public class Damnit implements KeyListener {
private int timer = 0;

public void keyPressed(KeyEvent key) {
    System.out.println("Pressed: " + key.getKeyChar());
}
public void keyTyped(KeyEvent key) {
    System.out.println("Typed: " + key.getKeyChar());
}
public void keyReleased(KeyEvent key) {
    System.out.println("Released: " + key.getKeyChar());
}

private void setUp() {
    while (timer &lt; 180) {
        try {
            Thread.sleep(1000);
             timer++;
        } catch (Exception e) { }
    }
}

public static void main(String[] args) {

        new Damnit().setUp();
}

}

Não deveria aparecer na tela a palavra Pressed: seguida da letra que foi pressionada?

Agradeceria um help sobre este tópico :!:

[]s Augusto

Esqueci de adicionar o listener… foi mal. Ajusta o código assim:

public class Damnit extends JFrame implements KeyListener {

   Damnit() { addKeyListener(this); setVisible(true); }

}

Não tinha testado :roll:

O resto continua o mesmo… T+