Kbhit em java

3 respostas
D

Olá,

gostaria de saber como fazer o seguinte

um programa fica em loop infinito imprimindo a letra A, porém, quando alguém dá um clique no teclado ele imprime a letra B…

Basicamente queria fazer algo como o kbhit da linguagem C…

Obrigado.

3 Respostas

camilaoc

É bem simples:
Vou montar um pseudocodigo aqui

String letra="A"; //inicialmente A
while (true){
    System.out.println(letra); 
    while (não houver interrupção do teclado)
        letra=pegaLetraDigitadaNoTeclado();
    }
}

Basta agora vc procurar como efetua a leitura do teclado. Busque no pacote JAVA.OI
Espero poder ter ajudado.

D

o que eu colocaria no lugar de “não houver interrupção do teclado” ???

dudaskank

olá

camilaoc, acho que isso ele já tinha uma idéia hehehe

bom, infelizmente não existe nada parecido com o kbhit() em java, então vc precisa fazer uma gambi... digo usar um outro meio para alcançar seus objetivos hehhee

package teste;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;

public class Kbhit extends JFrame implements KeyListener {

	private static final long serialVersionUID = 1L;

	boolean kbhit = false;

	public static void main(String[] args) throws Exception {
		Kbhit kbhit = new Kbhit();
		while (!kbhit.kbhit()) {
			System.out.print(".");
			Thread.sleep(500);
		}
		kbhit.dispose();
	}

	public Kbhit() {
		setSize(320, 240);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		addKeyListener(this);
		setVisible(true);
	}

	public boolean kbhit() {
		return kbhit;
	}

	public void keyPressed(KeyEvent e) {
		kbhit = true;
		System.out.println("keyPressed");
	}

	public void keyReleased(KeyEvent e) {
		System.out.println("keyReleased");
	}

	public void keyTyped(KeyEvent e) {
		System.out.println("keyTyped");
	}

}

O que fiz aí foi criar uma janela e um listener pros eventos do teclado, o único porém é que você precisa estar com o frame em foco para funcionar, e não consegui fazer apenas pelo console algo semelhante...

Espero que ajude :)

Criado 22 de junho de 2006
Ultima resposta 23 de jun. de 2006
Respostas 3
Participantes 3