KeyListener na linha de comando

5 respostas
sawp32

Galera, estou com um problema aqui.

Preciso mt melhorar interação do usuario com uma interface texto aqui.
Estou pegando os comandos dados pelo usuário com o clássico:

BufferedReader cm = new BufferedReader(new InputStreamReader(System.in));

String s;

s = cm.readLine();

Mas assim o processamento é disparado só depois dele dar enter. Como que eu faço, na interface texto, para que o comando seja disparado logo que ele pressiona uma tecla???

Abraço.

5 Respostas

renzonuccitelli

Cara, eu fiz isso tem pouco tempo. Mas minha aplicação utilizava TextField. Aí eu apenas adicionei o keyListener nele para executar as ações que eu desejava. No meu caso, eu criava uma Thread para pesquisar no banco conforme o usuário digitasse…

sawp32

Pois é… mas se usar um componente gráfico sempre tá pra colocar um listener nele.
Acontece que a aplicação toda já está programada pra IO na linha de comando. E tb pq eu quero que rode em sistemas sem ambiente gráfico. Mas eu preciso demais que NA INTERFACE TEXTO os comandos sejam disparados direto qdo aperta a tecla.

renzonuccitelli

É, então acho que vc vai ter que fazer via Thread mesmo…

sawp32

Uai, como assim, via thread??

A princípio, o programa pode parar na hora de pedir a entrada. Nao preciso paralelizar nda.

O que eu quero é só que um metodo seja executado logo qdo eu aperto uma tecla, sem ter de apertar enter depois.

Por exemplo, tenho uma lista de comandos q o usuario insere. Quero que quando ele clique na “seta para cima”, ele acesse o comando anterior (em vez de digitá-lo novamente) e só então, quando apertar enter, que o comando seja executado.

T

http://pitman.co.za/projects/charva/index.html

Criado 14 de novembro de 2008
Ultima resposta 17 de nov. de 2008
Respostas 5
Participantes 3